Python标准库是Python语言的核心组成部分,它包含了大量的模块,用于处理文件、数据编码、数学运算、网络通信等任务。Python标准库是随Python解释器一起发布的一系列模块,提供了许多内置的功能和工具,帮助开发者扩展Python程序的能力。使得开发者能够快速实现各种功能。
重要模块
-
sys:提供了与Python解释器密切相关的函数和变量。例如,
sys.argv
用于访问命令行参数,sys.exit()
用于退出程序。import sys def readfile(filename): '''Print a file to the standard output.''' with open(filename) as f: while True: line = f.readline() if len(line) == 0: break print(line) # 打印文件内容 if len(sys.argv) < 2: print('No action specified.') sys.exit() if sys.argv[1].startswith('--'): option = sys.argv[1][2:] if option == 'version': print('Version 1.2') elif option == 'help': print(''' This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help ''') else: print('Unknown option.') sys.exit() else: for filename in sys.argv[1:]: readfile(filename)
这段Python代码的功能是读取并打印指定文件的内容。首先,它会检查命令行参数的个数,如果没有指定任何参数,则输出提示信息并退出程序。如果指定了参数,它会检查第一个参数是否以"--"开头,如果是,则判断该参数是"--version"还是"--help",并分别输出相应的版本信息和帮助信息。如果指定了文件名,则逐个读取并打印这些文件的内容。
sys.version字符串给你提供安装的Python的版本信息。sys.version_info元组则提供一个更简单的方法来使你的程序具备Python版本要求功能。import sys print(sys.version) print(sys.version_info) #### 输出 python的版本 3.9.16 | packaged by conda-forge | (main, Feb 1 2023, 21:28:38) [MSC v.1929 64 bit (AMD64)] sys.version_info(major=3, minor=9, micro=16, releaselevel='final', serial=0)
-
os:提供了许多与操作系统交互的函数。例如,
os.path
用于处理文件路径,os.environ
用于访问环境变量。
import os print(os.name) # 读取当前的操作系统 print(os.getcwd()) # 函数得到当前工作目录,即当前Python脚本工作的目录路径。 print(os.getenv('PATH')) # 用来读取环境变量。 # os.putenv('FOO', '1') # 用来设置环境变量 print(os.listdir('E:\\')) # 返回指定目录下的所有文件和目录名 # os.remove('test.txt') # 删除指定文件 os.system('mkdir today') # 执行shell命令 print(os.linesep) # 给出当前平台使用的行终止符 windows '\r\n' print(os.path.split('E:\\test.txt')) # 返回一个路径的目录名和文件名
-
datetime:提供了日期和时间处理的功能。例如,
datetime.date
和datetime.datetime
用于表示日期和时间。from datetime import datetime, timedelta # 创建一个当前时间的 datetime 对象 now = datetime.now() # 打印当前时间 print("当前时间:", now) # 创建一个明天的 datetime 对象 tomorrow = now + timedelta(days=1) # 打印明天的时间 print("明天的时间:", tomorrow) # 创建一个昨天的 datetime 对象 yesterday = now - timedelta(days=1) # 打印昨天的时间 print("昨天的时间:", yesterday) # 创建一个指定日期和时间的 datetime 对象 specific_date_time = datetime(2023, 10, 10, 15, 30, 0) # 打印指定日期和时间的 datetime 对象 print("指定日期和时间:", specific_date_time) # 将 datetime 对象转换为字符串 formatted_now = now.strftime("%Y-%m-%d %H:%M:%S") # 打印格式化后的当前时间 print("格式化后的当前时间:", formatted_now) # 将字符串转换为 datetime 对象 formatted_datetime = datetime.strptime("2023-10-10 15:30:00", "%Y-%m-%d %H:%M:%S") # 打印格式化后的 datetime 对象 print("格式化后的 datetime 对象:", formatted_datetime)
在上述示例中,我们首先导入了
datetime
模块,并创建了一个当前时间的datetime
对象now
。然后,我们使用timedelta
对象来创建明天和昨天的datetime
对象,并打印它们的时间。接下来,我们创建了一个指定日期和时间的datetime
对象,并打印它的时间。然后,我们使用strftime
方法将datetime
对象转换为字符串,并打印格式化后的当前时间。最后,我们使用strptime
方法将字符串转换为datetime
对象,并打印格式化后的datetime
对象。请注意,
strftime
方法和strptime
方法中的日期和时间格式可以根据需要进行调整。strftime
方法用于将datetime
对象转换为字符串,而strptime
方法用于将字符串转换为datetime
对象。 -
math:提供了数学运算和常数。例如,
math.sqrt()
用于计算平方根,math.pi
是圆周率的值。 -
json:用于处理JSON(JavaScript Object Notation)数据格式。提供了
json.dumps()
和json.loads()
等函数来序列化和反序列化JSON数据。
import json # 定义一个 Python 对象 data = { "name": "John Doe", "age": 30, "city": "New York" } # 将 Python 对象转换为 JSON 字符串 json_data = json.dumps(data) # 打印 JSON 字符串 print("JSON 字符串:", json_data) # 将 JSON 字符串转换为 Python 对象 parsed_data = json.loads(json_data) # 打印解析后的 Python 对象 print("解析后的 Python 对象:", parsed_data)
-
re:提供了正则表达式的支持。可以用来搜索、匹配和替换文本中的模式。
import re # 定义一个正则表达式模式 pattern = r"([a-zA-Z0-9_.+-]+)@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,}" # 定义要匹配的文本 text = "example@example.com" # 使用 re 模块的 match 函数进行匹配 match = re.match(pattern, text) # 如果匹配成功,打印匹配结果 if match: print("匹配结果:", match.group()) else: print("匹配失败")
在上述示例中,我们首先定义了一个正则表达式模式
pattern
,用于匹配电子邮件地址。然后,我们定义了要匹配的文本text
,即一个电子邮件地址。接下来,我们使用re
模块的match
函数进行匹配,并将匹配结果存储在变量match
中。最后,我们检查match
是否为 None,如果match
不为 None,说明匹配成功,我们打印出匹配结果。如果match
为 None,说明匹配失败,我们打印出相应的提示信息。请注意,正则表达式模式中的
r
前缀表示原始字符串,它可以防止转义字符被解释为特殊字符。在正则表达式模式中,+
表示匹配前面的元素一次或多次,()
表示捕获组,用于提取匹配结果中的子表达式。@
表示匹配@
字符,\.
表示匹配.
字符,\w
表示匹配任意字母、数字或下划线,\d
表示匹配任意数字,{2,}
表示匹配前面的元素至少两次。这只是
re
模块的一个简单示例,re
模块还提供了许多其他函数和类,用于进行更复杂的正则表达式操作。你可以参考 Python 的官方文档以获取更多信息。 -
logging:提供了灵活的记录事件、错误、警告和调试信息的日志系统。
import logging # 创建一个 Logger 对象 logger = logging.getLogger(__name__) # 设置日志级别 logger.setLevel(logging.DEBUG) # 创建一个 FileHandler 对象,用于将日志记录到文件中 file_handler = logging.FileHandler('example.log') # 设置 FileHandler 的格式 file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) # 将 FileHandler 添加到 Logger 对象中 logger.addHandler(file_handler) # 记录一条 DEBUG 级别的日志 logger.debug('这是一条 DEBUG 级别的日志') # 记录一条 INFO 级别的日志 logger.info('这是一条 INFO 级别的日志') # 记录一条 WARNING 级别的日志 logger.warning('这是一条 WARNING 级别的日志') # 记录一条 ERROR 级别的日志 logger.error('这是一条 ERROR 级别的日志') # 记录一条 CRITICAL 级别的日志 logger.critical('这是一条 CRITICAL 级别的日志')
在上述示例中,我们首先导入了
logging
模块,并创建了一个Logger
对象logger
。然后,我们使用setLevel
方法设置了日志级别为DEBUG
,表示只记录DEBUG
及以上级别的日志。接下来,我们创建了一个FileHandler
对象file_handler
,用于将日志记录到文件中,并使用setFormatter
方法设置了FileHandler
的格式。最后,我们将file_handler
添加到Logger
对象中,并使用不同的方法记录了不同级别的日志。请注意,
logging.FileHandler
的第一个参数'example.log'
是要写入的日志文件的路径。如果该文件不存在,logging.FileHandler
会自动创建它。如果你希望将日志记录到标准输出(控制台),可以使用logging.StreamHandler
: -
random:提供了生成伪随机数的工具。可以用来生成各种分布的随机数。
import random # 生成一个 0 到 1 之间的随机浮点数 random_float = random.random() # 生成一个指定范围内的随机整数 random_integer = random.randint(1, 10) # 生成一个指定范围内的随机浮点数 random_float_range = random.uniform(1, 10) # 从一个列表中随机选择一个元素 random.choice(['苹果', '香蕉', '橙子']) # 从一个列表中随机选择多个元素 random.sample(['苹果', '香蕉', '橙子', '草莓'], 2) # 生成一个指定长度的随机字符串 random_string = ''.join(random.choice('abcdefghijklmnopqrstuvwxyz') for i in range(10)) # 打乱一个列表的顺序 random.shuffle(['苹果', '香蕉', '橙子', '草莓']) print(random_float) print(random_integer) print(random_float_range) print(random.choice(['苹果', '香蕉', '橙子'])) print(random.sample(['苹果', '香蕉', '橙子', '草莓'], 2)) print(random_string) print(random.shuffle(['苹果', '香蕉', '橙子', '草莓']))
在上述示例中,我们首先导入了
random
模块,并使用了其中的一些函数来生成随机数。random.random()
函数生成一个 0 到 1 之间的随机浮点数。random.randint(a, b)
函数生成一个指定范围内的随机整数,其中 a 和 b 分别是范围的下限和上限。random.uniform(a, b)
函数生成一个指定范围内的随机浮点数,其中 a 和 b 分别是范围的下限和上限。random.choice(seq)
函数从序列 seq 中随机选择一个元素。random.sample(seq, k)
函数从序列 seq 中随机选择 k 个元素,返回一个新的列表。''.join(random.choice('abcdefghijklmnopqrstuvwxyz') for i in range(10))
使用生成器表达式生成一个指定长度的随机字符串。random.shuffle(seq)
函数打乱序列 seq 的顺序。这些函数可以帮助你在 Python 程序中生成各种类型的随机数,以满足不同的需求。