Python Stdlib
标准库
os
:提供了与操作系统交互的函数,例如文件和目录操作。sys
:提供了访问Python解释器及其环境的变量和函数。math
:提供了数学计算函数,例如三角函数、指数函数等。random
:提供了生成随机数的函数。datetime
:提供了处理日期和时间的函数和类。re
:提供了正则表达式功能,用于字符串匹配和处理。json
:提供了处理JSON数据的函数和类。csv
:提供了读写CSV格式文件的函数和类。urllib
:提供了与HTTP协议相关的函数和类,用于发送HTTP请求和接收响应。socket
:提供了网络编程所需的基本功能,例如创建套接字、发送和接收数据等。
除此之外,还有许多其他模块,例如
collections
、itertools
、functools
、logging
等,它们提供了各种实用功能和工具。使用Python标准库可以大幅度提高编程效率,并且在大多数情况下,它们提供的功能已经足够满足常见需求。
1. os
模块
1
2
3
4
5
6
7
8
9
10
11
12
13
import os
# 获取当前工作目录
cur_dir = os.getcwd()
print(cur_dir)
# 创建目录
new_dir = os.path.join(cur_dir, 'new_folder')
os.mkdir(new_dir)
# 列出目录内容
content = os.listdir(cur_dir)
print(content)
这个例子演示了如何使用
os
模块进行文件和目录操作。通过getcwd()
函数可以获取当前工作目录,使用join()
函数可以拼接路径,使用mkdir()
函数可以创建新目录,使用listdir()
函数可以列出目录内容。
2. sys
模块
1
2
3
4
5
6
7
8
9
10
import sys
# 打印命令行参数
args = sys.argv
for arg in args:
print(arg)
# 获取Python解释器信息
info = sys.version_info
print(info)
这个例子演示了如何使用
sys
模块访问Python解释器及其环境的变量和函数。通过argv
变量可以获取命令行参数,通过version_info
变量可以获取Python解释器版本信息。
3. math
模块
1
2
3
4
5
6
7
8
9
10
11
12
13
import math
# 计算正弦值
sin_val = math.sin(math.pi/4)
print(sin_val)
# 计算自然指数
exp_val = math.exp(2)
print(exp_val)
# 向上取整
ceil_val = math.ceil(4.3)
print(ceil_val)
这个例子演示了如何使用
math
模块进行数学计算。通过sin()
函数可以计算给定角度的正弦值,使用exp()
函数可以计算自然指数,使用ceil()
函数可以将浮点数向上取整。
4. random
模块
1
2
3
4
5
6
7
8
9
10
import random
# 生成随机整数
rand_int = random.randint(1, 10)
print(rand_int)
# 从列表中选择随机元素
my_list = ['apple', 'banana', 'orange']
rand_item = random.choice(my_list)
print(rand_item)
这个例子演示了如何使用
random
模块生成随机数。通过randint()
函数可以生成指定范围内的随机整数,使用choice()
函数可以从列表中随机选择一个元素。
5. datetime
模块
1
2
3
4
5
6
7
8
9
import datetime
# 获取当前日期和时间
now = datetime.datetime.now()
print(now)
# 格式化时间字符串
str_time = now.strftime("%Y-%m-%d %H:%M:%S")
print(str_time)
这个例子演示了如何使用
datetime
模块处理日期和时间。通过now()
函数可以获取当前日期和时间,使用strftime()
函数可以将日期和时间格式化为指定的字符串格式。
6. re
模块
1
2
3
4
5
6
7
8
import re
# 查找匹配的字符串
pattern = r'hello\s(\w+)'
text = 'hello world'
match_obj = re.search(pattern, text)
if match_obj:
print(match_obj.group(1))
这个例子演示了如何使用
re
模块进行正则表达式匹配。通过search()
函数可以在文本中查找与指定模式匹配的字符串,并返回一个匹配对象,使用group()
方法可以获取匹配到的字符串。
7. json
模块
1
2
3
4
5
6
7
8
9
10
11
import json
# 将Python对象转换为JSON字符串
data = {'name': 'Alice', 'age': 25}
json_str = json.dumps(data)
print(json_str)
# 将JSON字符串转换为Python对象
json_data = '{"name": "Bob", "age": 30}'
py_obj = json.loads(json_data)
print(py_obj)
这个例子演示了如何使用
json
模块处理JSON数据。通过dumps()
函数可以将Python对象转换为JSON字符串,使用loads()
函数可以将JSON字符串转换为Python对象。
8. csv
模块
1
2
3
4
5
6
7
8
9
10
11
12
13
import csv
# 写入CSV文件
data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]
with open('people.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
# 读取CSV文件
with open('people.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
这个例子演示了如何使用
csv
模块进行CSV文件的读写。通过writerows()
函数可以将数据写入CSV文件,使用reader()
函数可以读取CSV文件,并且返回以每一行作为元素的列表。
9. urllib
模块
1
2
3
4
5
6
import urllib.request
# 发送GET请求并获取响应
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)
这个例子演示了如何使用
urllib
模块发送HTTP请求,并接收响应。使用urlopen()
函数可以发送GET请求并获取响应。响应内容是字节类型的数据,可以使用decode()
方法将其转换为文本类型的数据。
10. socket
模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import socket
# 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
server_address = ('localhost', 8888)
sock.connect(server_address)
# 发送和接收数据
message = b'Hello, server!'
sock.sendall(message)
data = sock.recv(1024)
print(data)
# 关闭套接字
sock.close()
这个例子演示了如何使用
socket
模块进行网络编程。通过socket()
函数可以创建套接字对象,使用connect()
函数可以连接到指定地址和端口的服务器,使用sendall()
函数可以发送数据,使用recv()
函数可以接收数据,最后使用close()
函数关闭套接字。
完整例子
以下是一个包含以上标准库的Python代码片段:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import os
import sys
import math
import random
import datetime
import re
import json
import csv
import urllib.request
import socket
# 使用标准库函数和方法
print(os.listdir('.'))
print(sys.version_info)
print(math.pi)
print(random.randint(1, 10))
print(datetime.datetime.now())
print(re.findall(r'\b\w+\b', 'Hello, World!'))
print(json.dumps({'name': 'Alice', 'age': 25}))
data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]
with open('people.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8888)
sock.connect(server_address)
message = b'Hello, server!'
sock.sendall(message)
data = sock.recv(1024)
print(data)
sock.close()
-
这个代码片段演示了如何使用以上标准库。具体地:
os
模块:使用listdir()
函数列出当前目录下的文件和子目录。sys
模块:使用version_info
属性获取Python解释器版本信息。math
模块:使用pi
常量获取圆周率。random
模块:使用randint()
函数生成指定范围内的随机整数。datetime
模块:使用datetime.now()
函数获取当前日期和时间。re
模块:使用findall()
函数查找字符串中的单词。json
模块:使用dumps()
函数将Python对象转换为JSON格式的字符串。csv
模块:使用writerows()
函数将数据写入CSV文件。urllib.request
模块:使用urlopen()
函数发送HTTP请求并获取响应。socket
模块:使用套接字对象创建网络连接,发送和接收数据。
最后,这个代码片段的运行结果可以根据具体环境而定。例如,输出当前目录下的文件列表、Python解释器版本信息、圆周率等是固定的;而生成的随机整数、当前日期和时间、从网站获取的HTML内容、服务器返回的数据等则会因为不同的运行环境而不同。