Python标准库是Python编程语言自带的一系列模块和功能的集合,这些模块提供了各种常见任务的解决方案,如文件处理、网络编程、数据库接口、图形界面开发、科学计算等。使用标准库可以大大提高开发效率,减少重复劳动。
一、 os
模块:文件和目录操作
import os
# 获取当前工作目录
current_directory = os.getcwd()
print("当前工作目录:", current_directory)
# 更改工作目录
os.chdir("/path/to/new/directory")
print("新的工作目录:", os.getcwd())
# 列出目录中的文件
files = os.listdir()
print("当前目录中的文件:", files)
# 判断文件或目录是否存在
if os.path.exists("file.txt"):
print("文件存在")
# 创建新目录
os.mkdir("new_directory")
# 删除文件
os.remove("file.txt")
# 删除目录(需确保目录为空)
os.rmdir("new_directory")
二、 sys
模块:与Python解释器交互
import sys
# 访问命令行参数
print("命令行参数:", sys.argv)
# 退出程序
sys.exit("程序退出")
# 标准输出和标准错误输出
print("这是标准输出")
sys.stderr.write("这是标准错误输出\n")
三、 datetime
模块:日期和时间处理
import datetime
# 获取当前日期和时间
now = datetime.datetime.now()
print("当前日期和时间:", now)
# 创建自定义日期和时间
custom_date = datetime.datetime(2023, 3, 15, 12, 30)
print("自定义日期和时间:", custom_date)
# 计算两个日期之间的差值
delta = datetime.timedelta(days=5)
print("5天后的日期:", now + delta)
# 格式化日期和时间
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的日期:", formatted_date)
四、 json
模块:处理JSON数据
import json
# Python对象转换为JSON字符串
data = {
"name": "John Doe",
"age": 30,
"city": "New York"
}
json_string = json.dumps(data)
print("JSON字符串:", json_string)
# JSON字符串转换为Python对象
parsed_data = json.loads(json_string)
print("解析后的Python对象:", parsed_data)
五、 re
模块:正则表达式
import re
# 匹配字符串中的数字
pattern = re.compile(r'\d+')
match = pattern.findall("The price is 123 dollars.")
print("找到的数字:", match)
# 替换字符串中的模式
new_string = re.sub(r'\d+', '42', "The price is 123 dollars.")
print("替换后的字符串:", new_string)
六、 time
模块
time
模块是 Python 的标准库之一,用于处理时间相关的操作。你可以使用 time
模块来获取当前时间、执行时间的测量、延迟执行等。下面是一些 time
模块的常见用法和案例代码:
1. 获取当前时间
import time
# 获取当前时间戳(以秒为单位的浮点数)
current_time = time.time()
print("Current time in seconds:", current_time)
# 格式化时间戳为本地时间
local_time = time.localtime(current_time)
print("Local time:", local_time)
# 格式化时间戳为字符串
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("Formatted time:", formatted_time)
2. 延迟执行(休眠)
import time
# 延迟执行 5 秒
time.sleep(5)
print("5 seconds have passed.")
3. 执行时间的测量
import time
start_time = time.time()
# 执行一些操作
for i in range(1000000):
pass
end_time = time.time()
elapsed_time = end_time - start_time
print("Elapsed time:", elapsed_time, "seconds")
4. 时间格式化
import time
# 获取当前时间戳
current_time = time.time()
# 使用strftime方法格式化时间
formatted_time = time.strftime("%A, %d. %B %Y %H:%M:%S", time.localtime(current_time))
print("Formatted time:", formatted_time)
# 常用的格式化代码
# %A: 星期几的完整文本表示
# %a: 星期几的缩写表示
# %B: 月份的完整文本表示
# %b: 月份的缩写表示
# %d: 日,两位数的表示
# %H: 小时,24小时制,两位数表示
# %I: 小时,12小时制,两位数表示
# %M: 分钟,两位数表示
# %S: 秒,两位数表示
# %Y: 年份,四位数表示
# %y: 年份,两位数表示
5. 时间戳与结构化时间转换
import time
# 将时间戳转换为结构化时间
timestamp = 1626700800 # 假设这是一个时间戳
structured_time = time.localtime(timestamp)
print("Structured time:", structured_time)
# 将结构化时间转换为时间戳
structured_time = time.struct_time((2021, 7, 20, 0, 0, 0, 0, 0, 0))
timestamp = time.mktime(structured_time)
print("Timestamp:", timestamp)
time
模块提供了多种方法来处理时间,从获取当前时间到执行时间的测量,再到时间戳和结构化时间之间的转换。在处理时间相关的任务时,它是非常有用的。
七、 random
模块
random
模块是 Python 的标准库之一,用于生成随机数。你可以使用 random
模块来生成伪随机数,这些数在多种应用中都很有用,比如模拟、游戏、统计模型等。下面是一些 random
模块的常见用法和案例代码:
1. 生成随机整数
import random
# 生成一个0到9之间的随机整数
random_integer = random.randint(0, 9)
print("Random integer:", random_integer)
# 生成一个随机选择的整数列表
random_integers = random.sample(range(100), 5) # 从0到99中选择5个不重复的整数
print("Random integers:", random_integers)
2. 生成随机浮点数
import random
# 生成一个0.0到1.0之间的随机浮点数
random_float = random.random()
print("Random float:", random_float)
# 生成一个指定范围内的随机浮点数
random_float_in_range = random.uniform(1.0, 10.0) # 在1.0到10.0之间
print("Random float in range:", random_float_in_range)
3. 打乱列表顺序
import random
# 打乱列表顺序
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print("Shuffled list:", my_list)
4. 随机选择元素
import random
# 从列表中随机选择一个元素
my_list = ['apple', 'banana', 'cherry']
random_choice = random.choice(my_list)
print("Random choice:", random_choice)
5. 设置随机数种子
import random
# 设置随机数种子,使得每次生成的随机数序列相同
random.seed(1)
# 生成随机整数
print(random.randint(0, 9))
# 再次生成随机整数,由于种子相同,结果应该与上一次相同
print(random.randint(0, 9))
通过设置随机数种子,你可以确保每次运行程序时生成的随机数序列是相同的,这在需要可重复的实验或调试时非常有用。
6. 随机分割列表
import random
# 随机分割列表为两部分
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
split_index = random.randint(0, len(my_list) - 1)
first_part = my_list[:split_index]
second_part = my_list[split_index:]
print("First part:", first_part)
print("Second part:", second_part)
random
模块提供了丰富的功能来生成各种类型的随机数。请注意,由于它们是伪随机数生成器,所以并不是真正的随机,但对于大多数应用来说,它们的随机性已经足够了。如果你需要更高质量的随机数,可能需要考虑使用专门的随机数生成库。
八、math
模块
math
模块是 Python 的标准库之一,提供了对一系列数学函数的访问,这些函数有助于执行基本的数学运算,如三角函数、对数、指数函数、开方等。以下是一些 math
模块的常见用法和案例代码:
1. 常量
math
模块包含了一些常用的数学常量,如 π 和 e。
import math
# 圆周率 π
pi_value = math.pi
print("Value of pi:", pi_value)
# 自然对数的底 e
e_value = math.e
print("Value of e:", e_value)
2. 幂和对数
import math
# 计算幂
x = 2
y = 3
x_to_the_power_of_y = math.pow(x, y)
print(f"{x} to the power of {y} is {x_to_the_power_of_y}")
# 计算自然对数
log_of_x = math.log(x)
print(f"Natural logarithm of {x} is {log_of_x}")
# 计算以10为底的对数
log10_of_x = math.log10(x)
print(f"Logarithm base 10 of {x} is {log10_of_x}")
3. 开方
import math
# 计算平方根
sqrt_of_x = math.sqrt(x)
print(f"Square root of {x} is {sqrt_of_x}")
# 计算任意数的幂次方根
cuberoot_of_x = math.pow(x, 1/3)
print(f"Cube root of {x} is {cuberoot_of_x}")
4. 三角函数
import math
# 计算正弦
sin_of_x = math.sin(math.radians(45)) # 注意:角度需要转换为弧度
print(f"Sine of 45 degrees is {sin_of_x}")
# 计算余弦
cos_of_x = math.cos(math.radians(45))
print(f"Cosine of 45 degrees is {cos_of_x}")
# 计算正切
tan_of_x = math.tan(math.radians(45))
print(f"Tangent of 45 degrees is {tan_of_x}")
5. 舍入函数
import math
# 向上取整
ceil_value = math.ceil(4.7)
print(f"Ceiling of 4.7 is {ceil_value}")
# 向下取整
floor_value = math.floor(4.7)
print(f"Flooring of 4.7 is {floor_value}")
# 四舍五入
round_value = math.round(4.7)
print(f"Rounding of 4.7 is {round_value}")
6. 阶乘
import math
# 计算阶乘
factorial_of_5 = math.factorial(5)
print(f"Factorial of 5 is {factorial_of_5}")
7. 最大值和最小值
import math
# 计算最大值
max_value = math.fmax(3, 5)
print(f"Maximum of 3 and 5 is {max_value}")
# 计算最小值
min_value = math.fmin(3, 5)
print(f"Minimum of 3 and 5 is {min_value}")
math
模块还包含许多其他函数,用于执行各种数学运算。这些函数为开发者提供了一个方便的工具集,用于处理日常的数学计算任务。如果你需要执行更复杂的数学运算或需要用到高级的数学函数,可能需要考虑使用 scipy
或 numpy
等第三方库。
九、urllib
模块
urllib
是 Python 的一个标准库模块,用于打开和读取 URL(统一资源定位符)。这个模块提供了一系列的功能,用于处理网络相关的任务,比如打开和读取网页内容、发送 HTTP 请求等。urllib
模块通常与 urllib.request
、urllib.error
、urllib.parse
和 urllib.robotparser
一起使用,这些模块提供了一系列的功能和异常处理。
下面是一些 urllib
模块中常用功能的使用示例:
1. urllib.request
- 打开和读取 URL
from urllib.request import urlopen
# 打开 URL 并读取内容
url = 'https://www.example.com'
response = urlopen(url)
# 读取网页内容
html_content = response.read()
# 打印网页内容
print(html_content.decode('utf-8'))
2. urllib.parse
- 解析 URL
from urllib.parse import urlparse, urljoin
# 解析 URL
parsed_url = urlparse('https://www.example.com/path?query=value#fragment')
print(parsed_url)
# 构建 URL
base_url = 'https://www.example.com/path'
relative_url = 'subpath?query=value'
absolute_url = urljoin(base_url, relative_url)
print(absolute_url)
3. urllib.error
- 异常处理
from urllib.request import urlopen
from urllib.error import URLError, HTTPError
url = 'https://www.example.com/nonexistent'
try:
response = urlopen(url)
except URLError as e:
print(f'We failed to reach a server.')
print(f'Reason: {e.reason}')
except HTTPError as e:
print(f'The server couldn\'t fulfill the request.')
print(f'Error code: {e.code}')
print(f'Error message: {e.read()}')
4. urllib.robotparser
- 读取和解析 robots.txt 文件
from urllib.robotparser import RobotFileParser
# 创建机器人解析器对象
parser = RobotFileParser()
# 设置要解析的 robots.txt 文件的 URL
parser.set_url('https://www.example.com/robots.txt')
# 检查特定用户代理是否可以访问某个路径
user_agent = 'mybot/1.0'
path = '/some/path'
if parser.can_fetch(user_agent, path):
print(f'{user_agent} can fetch {path}')
else:
print(f'{user_agent} cannot fetch {path}')
请注意,urllib
模块的功能相对基础,对于更复杂的 HTTP 请求(如 POST 请求、设置 headers、处理 cookies 等),你可能需要使用更高级的库,如 requests
。requests
库提供了更友好和强大的 API,使得发送 HTTP 请求变得更加简单和直观。