<< 返回目录
1 Python自学 - 标准库介绍
标准库是安装Python
时自带的一些模块集合,集成了丰富的功能,避免用户反复造轮子,这极大的提高了生产效率!
1.1 几种常用的标准库
1.1.1 os
模块
提供了与操作系统交互的接口,可用于处理文件和目录操作、环境变量操作、进程管理等。
查看os
模块下有哪些对象,可以使用print(dir(os))
语句。
- 示例1:
os
模块使用举例
import os
# 获取当前工作目录
print(os.getcwd())
# 列出目录中的文件和目录
print(os.listdir('.'))
# 创建目录
try:
os.mkdir('new_directory')
except Exception as e:
print(f'出现错误:{e}')
# 检查文件或目录是否存在
print(os.path.exists('file.txt'))
# 拼接路径
path = os.path.join(os.getcwd(), 'new_file.txt')
print(path)
输出:
D:\TYYSOFT\Study\Python
['20250114_101152.py', '20250115_084302.py', 'class_human.py', 'get_max_member.py', 'human_plus.py', 'module1.py', 'module_test_1.py', 'new_directory', 'print_hello.py', 'scan_file.py', 'selection_sort.py', 'slection_sort2.py', 'social', 'test-4.py', 'test.db', 'test_package.py', 'try_customize.py', 'try_customize_err.py', 'try_more_err.py', 'try_more_err2.py', 'try_test_1.py', 'try_test_division.py', 'tyr_customize_err2.py', 'yield_test.py', '__pycache__', '模块1.py']
出现错误:[WinError 183] 当文件已存在时,无法创建该文件。: 'new_directory'
False
D:\TYYSOFT\Study\Python\new_file.txt
1.1.2 sys
模块
提供了与 Python 解释器和系统交互的接口,包括获取命令行参数
、控制程序执行
、退出程序
、查看 Python 解释器的版本
等。
查看sys
模块下有哪些对象,可以使用print(dir(sys))
语句。
- 示例2:
sys
模块使用举例
import sys
# 获取命令行参数
print(sys.argv)
# 查看 Python 版本
print(sys.version)
# 查看sys下有哪些对象
#print(dir(sys))
# 退出程序
sys.exit(0)
输出:
['sys_study.py']
3.13.1 (tags/v3.13.1:0671451, Dec 3 2024, 19:06:28) [MSC v.1942 64 bit (AMD64)]
1.1.3 math
模块
提供了各种数学运算的函数和常量,如三角函数
、指数函数
、对数函数
、幂函数
和数学常数
(如 pi 和 e)。
- 示例3:
math
模块使用举例
import math
# 计算平方根
print(math.sqrt(25))
# 计算正弦值
print(math.sin(math.pi / 2))
# 计算自然对数
print(math.log(10))
输出:
5.0
1.0
2.302585092994046
1.1.4 random
模块
用于生成随机数和进行随机选择。
- 示例4:
random
模块使用举例
import random
# 生成 0 到 1 之间的随机浮点数
print(random.random())
# 从列表中随机选择一个元素
my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))
# 打乱列表元素顺序
random.shuffle(my_list)
print(my_list)
输出(每次输出不一样):
0.6254888854381639
1
[2, 4, 3, 1, 5]
1.1.5 datetime
模块
提供了日期和时间的处理功能,包括日期和时间的创建、格式化、计算和解析等。
- 示例5:
datetime
模块使用举例
from datetime import datetime, timedelta
# 获取当前日期和时间
now = datetime.now()
print(now)
# 创建特定日期和时间
date = datetime(2025, 1, 15)
print(date)
# 日期和时间的计算
future_date = now + timedelta(days=7)
print(future_date)
# 日期和时间的格式化
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)
输出:
2025-01-15 19:12:46.682913
2025-01-15 00:00:00
2025-01-22 19:12:46.682913
2025-01-15 19:12:46
1.1.6 re
模块
用于正则表达式操作,可用于字符串的匹配、搜索、替换和分割等。
- 示例6:
re
模板使用示例
import re
# 查找匹配的字符串
pattern = re.compile(r'\d+')
result = pattern.findall('abc123def456')
print(result)
# 替换匹配的字符串
new_string = pattern.sub('X', 'abc123def456')
print(new_string)
输出:
['123', '456']
abcXdefX
1.1.7 json
模块
用于处理 JSON 数据,包括 JSON 数据的编码(将 Python 对象转换为 JSON 字符串)和解码(将 JSON 字符串转换为 Python 对象)。
import json
data = {'key': 'value', 'list': [1, 2, 3]}
# 将 Python 对象转换为 JSON 字符串
json_string = json.dumps(data)
print(json_string)
# 将 JSON 字符串转换为 Python 对象
parsed_data = json.loads(json_string)
print(parsed_data)
输出:
{"key": "value", "list": [1, 2, 3]}
{'key': 'value', 'list': [1, 2, 3]}
1.1.8 collections
模块
提供了一些有用的数据结构,如 defaultdict
、Counter
、deque
等,可用于替代内置的数据结构,提供更强大的功能。
示例:
from collections import defaultdict, Counter, deque
# defaultdict 提供默认值
dd = defaultdict(int)
dd['key'] += 1
print(dd['key'])
# Counter 用于计数
counter = Counter(['a', 'b', 'a', 'c', 'a'])
print(counter)
# deque 是双端队列,支持从两端添加和删除元素
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)
print(dq)
输出:
1
Counter({'a': 3, 'b': 1, 'c': 1})
deque([0, 1, 2, 3, 4])
1.1.9 itertools
模块
提供了各种迭代器函数,可用于组合、排列、笛卡尔积等操作。
示例:
import itertools
# 生成排列
permutations = itertools.permutations([1, 2, 3], 2)
print(list(permutations))
# 生成组合
combinations = itertools.combinations([1, 2, 3], 2)
print(list(combinations))
# 生成笛卡尔积
product = itertools.product([1, 2], ['a', 'b'])
print(list(product))
输出:
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
[(1, 2), (1, 3), (2, 3)]
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
1.1.10 urllib
模块
用于网络请求和 URL
处理,可进行 HTTP
请求、URL
解析等操作。
示例:
from urllib.request import urlopen
from urllib.parse import urlparse
# 打开 URL
response = urlopen('http://www.example.com')
print(response.read())
# 解析 URL
parsed_url = urlparse('http://www.example.com/path?query=value')
print(parsed_url)
输出:
b'<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n <p>This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.</p>\n <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'
ParseResult(scheme='http', netloc='www.example.com', path='/path', params='', query='query=value', fragment='')
1.2 其他比较重要的标准模块
1.2.1 logging
模块
用于日志记录,可根据不同的级别(如 DEBUG
、INFO
、WARNING
、ERROR
、CRITICAL
)记录日志信息。
示例:
import logging
logging.basicConfig(level=logging.INFO)
logging.info('This is an info message')
logging.error('This is an error message')
输出:
INFO:root:This is an info message
ERROR:root:This is an error message
1.2.2 argparse
模块
用于解析命令行参数,使程序能够接受命令行输入并处理参数。
示例:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
输出:
D:\TYYSOFT\Study\Python>python argparse_study.py -h
usage: argparse_study.py [-h] [--sum] N [N ...]
Process some integers.
positional arguments:
N an integer for the accumulator
options:
-h, --help show this help message and exit
--sum sum the integers (default: find the max)
D:\TYYSOFT\Study\Python>python argparse_study.py --sum 100 300 22
422
1.2.3 sqlite3
模块
提供了对 SQLite
数据库的支持,可用于创建数据库、执行 SQL
语句、进行数据查询和更新等操作。
示例:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 创建表
c.execute('CREATE TABLE IF NOT EXISTS users (id INT, name TEXT)')
# 插入数据
c.execute('INSERT INTO users (id, name) VALUES (1, "Alice")')
# 提交事务
conn.commit()
# 查询数据
c.execute('SELECT * FROM users')
print(c.fetchall())
# 关闭连接
conn.close()
输出:
[(1, 'Alice')]
注:sqlite3.connect('example.db')
会在本地生成数据库文件example.db
。
1.2.4 time
模块
提供了时间相关的函数,包括时间获取、时间转换、时间延迟等操作。
示例:
import time
# 获取当前时间戳
print(time.time())
# 睡眠一段时间
time.sleep(1)
# 格式化时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(formatted_time)
输出:
1736943637.7549584
2025-01-15 20:20:38
1.3 总结
Python官方文档:https://docs.python.org/3/library/,读者可以阅读官方手册 ,这里有非常详细的各种内置库的使用说明。
作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.
<< 返回目录