Python基础——常用标准库

目录

1. os - 操作系统相关功能

2. sys - 与 Python 解释器交互

3. math - 数学运算

4. datetime - 日期和时间操作

5. re - 正则表达式

6. json - JSON 数据操作

7. random - 随机数生成

8. time - 时间相关功能

9. logging - 日志记录

10. subprocess - 子进程管理

11. itertools - 迭代器处理

12. collections - 高效数据结构

13. socket - 网络通信

14. email - 发送邮件

15. argparse - 命令行参数解析

16. shutil - 高级文件操作

17. uuid - 生成 UUID

18. pickle - 对象序列化


Python 提供了非常丰富的标准库,包含了许多模块和工具,使得开发者能够轻松地处理常见的任务,如文件处理、网络通信、数据解析等。以下是一些常用的 Python 标准库模块和它们的功能:

1. os - 操作系统相关功能

功能:用于与操作系统进行交互,执行诸如文件路径操作、目录遍历等任务。

常用方法

  • os.path: 路径操作
  • os.mkdir()os.rmdir(): 创建/删除目录
  • os.remove()os.rename(): 删除/重命名文件
  • os.getenv()os.environ: 环境变量操作
  • os.system(): 执行系统命令
import os

# 获取当前工作目录
print(os.getcwd())

# 创建一个新目录
os.mkdir('test_dir')

# 删除该目录
os.rmdir('test_dir')

# 获取文件的路径信息
file_path = '/home/user/file.txt'
print(os.path.exists(file_path))  # 检查文件是否存在
print(os.path.basename(file_path))  # 获取文件名
print(os.path.dirname(file_path))  # 获取文件所在的目录

2. sys - 与 Python 解释器交互

功能:与 Python 解释器的相关功能交互,提供系统级的参数和功能。

常用方法

  • sys.argv: 获取命令行参数
  • sys.exit(): 退出程序
  • sys.version: 获取 Python 版本信息
  • sys.path: 获取模块搜索路径
import sys

# 获取命令行参数
print(sys.argv)

# 获取 Python 版本信息
print(sys.version)

# 退出程序
# sys.exit("Exiting the program.")

3. math - 数学运算

功能:提供数学运算功能,包括三角函数、对数、指数等。

 常用方法:

  • math.sqrt(): 计算平方根
  • math.pow(): 计算幂
  • math.sin()math.cos()math.tan(): 三角函数
  • math.log()math.log10(): 对数函数
  • math.factorial(): 阶乘
import math

# 计算平方根
print(math.sqrt(16))

# 计算2的3次方
print(math.pow(2, 3))

# 计算圆周率的正弦值
print(math.sin(math.pi / 2))

# 计算对数
print(math.log(100, 10))  # 以 10 为底的对数

4. datetime - 日期和时间操作

功能:处理日期和时间。

 常用方法:

  • datetime.date(): 创建日期对象
  • datetime.datetime(): 创建日期时间对象
  • datetime.now(): 获取当前日期和时间
  • datetime.strptime()datetime.strftime(): 字符串与日期时间的转换
  • timedelta: 用于日期间的加减运算
import datetime

# 获取当前日期和时间
now = datetime.datetime.now()
print(now)

# 格式化当前日期
print(now.strftime("%Y-%m-%d %H:%M:%S"))

# 创建指定日期
my_birthday = datetime.date(1990, 5, 15)
print(my_birthday)

# 计算日期差
delta = datetime.timedelta(days=10)
print(now + delta)  # 当前日期加 10 天

5. re - 正则表达式

功能:正则表达式模块,用于字符串匹配、搜索和替换。

 常用方法:

  • re.match()re.search(): 匹配正则表达式
  • re.findall(): 查找所有匹配的字符串
  • re.sub(): 替换匹配的字符串
  • re.compile(): 编译正则表达式
import re

# 查找匹配的字符串
text = "The rain in Spain"
match = re.search(r"rain", text)
if match:
    print(f"Found: {match.group()}")

# 查找所有匹配的字符串
words = re.findall(r"\b\w{4}\b", text)  # 匹配所有4个字母的单词
print(words)

# 替换字符串
replaced_text = re.sub(r"rain", "sun", text)
print(replaced_text)

6. json - JSON 数据操作

功能:用于 JSON 数据的编码(序列化)和解码(反序列化)。

 常用方法:

  • json.dump(): 将对象转换为 JSON 字符串并写入文件
  • json.dumps(): 将对象转换为 JSON 字符串
  • json.load(): 从文件中加载 JSON 数据
  • json.loads(): 将 JSON 字符串转换为 Python 对象
import json

# 将 Python 对象转换为 JSON 字符串
data = {'name': 'Alice', 'age': 25, 'city': 'New York'}
json_str = json.dumps(data)
print(json_str)

# 将 JSON 字符串转换为 Python 对象
json_data = '{"name": "Alice", "age": 25, "city": "New York"}'
data_obj = json.loads(json_data)
print(data_obj)

# 将 Python 对象写入 JSON 文件
with open('data.json', 'w') as f:
    json.dump(data, f)

# 从 JSON 文件读取数据
with open('data.json', 'r') as f:
    data_from_file = json.load(f)
    print(data_from_file)

7. random - 随机数生成

功能:生成随机数、随机选择等。

 常用方法:

  • random.random(): 生成 0 到 1 之间的随机浮点数
  • random.randint(): 生成指定范围内的随机整数
  • random.choice(): 从列表中随机选择一个元素
  • random.shuffle(): 随机打乱列表
import random

# 生成 0 到 1 之间的随机浮点数
print(random.random())

# 生成一个范围内的随机整数
print(random.randint(1, 100))

# 从列表中随机选择一个元素
items = ['apple', 'banana', 'cherry']
print(random.choice(items))

# 打乱列表中的元素
random.shuffle(items)
print(items)

8. time - 时间相关功能

功能:处理时间相关的功能,如时间延迟、格式化时间等。

 常用方法:

  • ​​​​​​​time.time(): 获取当前时间的时间戳(自1970年1月1日以来的秒数)
  • time.sleep(): 使程序暂停指定时间
  • time.localtime()time.gmtime(): 将时间戳转换为本地时间或UTC时间
  • time.strftime(): 格式化时间
import time

# 获取当前时间的时间戳
timestamp = time.time()
print(timestamp)

# 程序暂停 2 秒
print("Start sleeping...")
time.sleep(2)
print("Wake up!")

# 格式化时间戳
current_time = time.localtime(timestamp)
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time)
print(formatted_time)

9. logging - 日志记录

功能:提供日志记录功能,用于跟踪程序运行时的信息、警告、错误等。

常用方法: 

  • ​​​​​​​logging.basicConfig(): 配置日志输出
  • logging.info()logging.warning()logging.error(): 记录不同级别的日志
  • logging.debug(): 调试信息日志
  • logging.exception(): 错误日志记录 
import logging

# 配置日志输出格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 记录不同级别的日志
logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is an error message")
logging.critical("This is a critical message")

10. subprocess - 子进程管理

功能:用于启动和与外部进程交互。

 常用方法:

  • ​​​​​​​subprocess.run(): 执行外部命令
  • subprocess.Popen(): 启动进程并进行更复杂的控制
  • subprocess.call(): 执行命令并返回执行结果
import subprocess

# 执行外部命令(这里以 "ls" 为例)
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)  # 输出命令执行结果

# 执行一个简单的命令并返回状态码
return_code = subprocess.call(['echo', 'Hello, World!'])
print(f"Return code: {return_code}")

11. itertools - 迭代器处理

功能:提供了用于处理迭代器的函数,用于高效的循环和组合操作。

 常用方法:

  • ​​​​​​​itertools.count(): 创建一个无限的计数器
  • itertools.cycle(): 循环遍历一个可迭代对象
  • itertools.permutations(): 获取元素的排列组合
  • itertools.combinations(): 获取元素的组合
import itertools

# 创建一个无限的计数器
counter = itertools.count(start=10, step=2)
for _ in range(5):
    print(next(counter))

# 获取排列组合
data = [1, 2, 3]
combinations = itertools.permutations(data)
for comb in combinations:
    print(comb)

# 循环遍历一个列表
cycle_list = itertools.cycle([1, 2, 3])
for _ in range(6):
    print(next(cycle_list))

12. collections - 高效数据结构

功能:提供了高效的数据结构(如字典、集合、队列等)的扩展。

 常用方法:

  • ​​​​​​​collections.Counter(): 计数器,统计元素出现次数
  • collections.defaultdict(): 提供默认值的字典
  • collections.deque(): 双端队列
  • collections.namedtuple(): 创建具名元组
import collections

# 使用 Counter 统计元素出现次数
counter = collections.Counter('abracadabra')
print(counter)

# 使用 defaultdict 为字典提供默认值
default_dict = collections.defaultdict(int)
default_dict['a'] += 1
default_dict['b'] += 2
print(default_dict)

# 使用 deque 实现双端队列
deque_obj = collections.deque([1, 2, 3])
deque_obj.append(4)
deque_obj.appendleft(0)
print(deque_obj)

# 使用 namedtuple 创建具名元组
Point = collections.namedtuple('Point', ['x', 'y'])
pt = Point(1, 2)
print(pt.x, pt.y)

13. socket - 网络通信

功能:用于网络通信,支持 TCP、UDP 等协议。

 常用方法:

  • ​​​​​​​socket.socket(): 创建一个 socket 对象
  • socket.bind(): 绑定地址和端口
  • socket.listen(): 开始监听连接
  • socket.connect(): 连接到远程主机
  • socket.send()socket.recv(): 发送和接收数据
import socket

# 创建一个 TCP 客户端并连接到服务器
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))

# 发送数据
client_socket.sendall(b'Hello, server')

# 接收数据
response = client_socket.recv(1024)
print('Received:', response)

# 关闭连接
client_socket.close()

14. email - 发送邮件

功能:处理电子邮件的创建、解析和发送。

 常用方法:

  • ​​​​​​​email.mime.multipart.MIMEMultipart(): 创建 MIME 格式的多部分邮件
  • email.mime.text.MIMEText(): 创建文本邮件
  • email.mime.base.MIMEBase(): 创建文件附件
  • email.message_from_string(): 从字符串解析邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 创建邮件
msg = MIMEMultipart()
msg['From'] = 'your_email@example.com'
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email'
body = 'This is a test email sent from Python.'
msg.attach(MIMEText(body, 'plain'))

# 发送邮件
with smtplib.SMTP('smtp.example.com', 587) as server:
    server.starttls()
    server.login('your_email@example.com', 'password')
    server.sendmail(msg['From'], msg['To'], msg.as_string())
    print("Email sent successfully.")

15. argparse - 命令行参数解析

功能:用于命令行参数解析。

 常用方法:

  • ​​​​​​​argparse.ArgumentParser(): 创建参数解析器
  • parser.add_argument(): 添加命令行参数
  • parser.parse_args(): 解析命令行参数
import argparse

# 创建解析器
parser = argparse.ArgumentParser(description='A simple argument parser')

# 添加参数
parser.add_argument('--name', type=str, help='Your name')
parser.add_argument('--age', type=int, help='Your age')

# 解析命令行参数
args = parser.parse_args()

print(f'Hello, {args.name}. You are {args.age} years old.')

16. shutil - 高级文件操作

功能:提供高级文件操作功能,如文件复制、移动等。

 常用方法:

  • ​​​​​​​shutil.copy(): 复制文件
  • shutil.move(): 移动文件或目录
  • shutil.rmtree(): 删除目录及其内容
  • shutil.disk_usage(): 获取磁盘使用情况
import shutil

# 复制文件
shutil.copy('source.txt', 'destination.txt')

# 移动文件
shutil.move('old_location.txt', 'new_location.txt')

# 删除文件或目录
shutil.rmtree('test_dir')

# 获取磁盘使用情况
usage = shutil.disk_usage('/')
print(f"Total: {usage.total}, Used: {usage.used}, Free: {usage.free}")

17. uuid - 生成 UUID

功能:生成全局唯一的标识符(UUID)。

常用方法:

  • ​​​​​​​uuid.uuid4(): 生成一个随机的 UUID
  • uuid.uuid1(): 基于时间戳和 MAC 地址生成 UUID
import uuid

# 生成一个随机的 UUID
print(uuid.uuid4())

# 基于时间戳和主机 ID 生成 UUID
print(uuid.uuid1())

18. pickle - 对象序列化

功能:序列化和反序列化 Python 对象。

常用方法: 

  • pickle.dump(): 将对象序列化并写入文件
  • pickle.load(): 从文件中加载并反序列化对象
import pickle

# 序列化对象
data = {'name': 'Alice', 'age': 25}
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f)

# 反序列化对象
with open('data.pkl', 'rb') as f:

这些模块可以帮助你在许多常见的编程任务中提高效率和灵活性。Python 的标准库非常丰富,建议在编程时了解和掌握这些常用的模块,可以大大简化开发工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二测试录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值