本文共 5446 字,大约阅读时间需要 18 分钟。
在 Python 编程中,模块是代码重用和代码管理的重要概念。一个模块可以看作是一个包含了一部分功能实现的代码集合,类似于函数式编程中的函数,通过模块可以实现代码的复用和代码之间的解耦。对于复杂的功能实现,往往需要多个模块协同工作。以下将从 sys、os、time、random、re、shutil、hashlib、json、pickle、configparser、paramiko、shelve、logging 等模块入手,分析其功能特点及常用用法。
sys 模块sys 模块用于提供与 Python 解释器相关的操作。它包含以下主要函数:
sys.argv:命令行参数列表,第一个元素是程序本身的路径。sys.exit(n):退出程序,正常退出时使用 exit(0)。sys.version:获取 Python 解释器的版本信息。sys.maxint:返回 Python 支持的最大整数值。sys.path:返回模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值。sys.platform:返回操作系统平台名称。sys.stdin:输入相关操作。sys.stdout:输出相关操作。sys.stderr:错误输出相关操作。示例:
import sys# 获取命令行参数print(sys.argv)# 退出程序sys.exit(0)
os 模块os 模块用于提供系统级别的操作,主要功能包括文件和目录操作、环境变量管理等。以下是其常用函数:
os.getcwd():获取当前工作目录。os.chdir("dirname"):切换当前工作目录。os.makedirs("dir1/dir2"):创建多层目录。os.removedirs("dirname"):递归删除目录。os.mkdir("dirname"):创建单级目录。os.rmdir("dirname"):删除单级空目录。os.listdir("dirname"):列出指定目录下的所有文件和子目录。os.remove():删除文件。os.rename("oldname", "new"):重命名文件或目录。os.stat("path/filename"):获取文件或目录的信息。os.sep:操作系统特定的路径分隔符。os.linesep:当前平台使用的行终止符。os.pathsep:用于分割文件路径的字符串。os.name:返回当前平台名称(如 nt 表示 Windows,posix 表示 Linux)。示例:
import os# 获取当前工作目录print(os.getcwd())# 创建多层目录os.makedirs("mydir/subdir")# 列出目录内容print(os.listdir("mydir"))# 删除目录os.removedirs("mydir") time 模块time 模块用于处理时间相关操作,常用来表示时间戳、格式化时间字符串或获取元组形式的时间信息。其主要函数包括:
time.time():返回当前时间的时间戳(UNIX 时间)。time.ctime():返回当前时间的字符串表示。time.localtime():返回当前时间的结构化元组。time.strftime():根据指定格式格式化时间字符串。示例:
import time# 格式化时间now = time.strftime("%Y-%m-%d %H:%M:%S")print(now)# 阻塞 1 秒time.sleep(1) random 模块random 模块用于生成随机数和随机样本,常用于开发随机验证、随机码生成等功能。其主要函数包括:
random.random():生成 0~1 的浮点数随机值。random.randint(a, b):生成 a 到 b 之间的整数随机值。random.randrange(a, b):生成 a 到 b-1 之间的整数随机值。random.choice(seq):从序列中随机选择一个元素。random.sample(seq, k):从序列中随机选择 k 个元素。示例:
import random# 随机生成验证码def generate_code(): code = "" for i in range(4): num = random.randint(0, 9) letter = chr(random.randint(65, 90)) letter_lower = chr(random.randint(97, 122)) code += random.choice([num, letter, letter_lower]) return code# 生成随机数print(random.randint(1, 100))
re 模块re 模块提供了正则表达式相关操作,常用于文本处理和模式匹配。其主要功能包括:
以下是常用函数:
re.compile():编译正则表达式,提高匹配效率。re.search():搜索字符串中是否存在匹配项。re.findall():找到匹配项并返回列表。re.sub():替换字符串中的匹配项。re.split():将字符串按模式分割。示例:
import re# 邮箱正则表达式email_pattern = r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+$'# 手机号正则表达式phone_pattern = r'^1[3578]\d{9}$'# IP 地址正则表达式ip_pattern = r'^((25[0-5]|2[0-4]\d|1\d{2}|[0-9]{1,3}(?:\.[0-9]{1,3}){3})$'# 进行匹配print(re.findall(ip_pattern, '192.168.0.1')) shutil 模块shutil 模块提供了更高级别的文件和目录操作功能,常用于文件拷贝、文件夹处理、压缩包处理等。其主要函数包括:
shutil.copyfileobj(fsrc, fdst):拷贝文件内容。shutil.copyfile(src, dst):拷贝文件。shutil.copytree(src, dst):递归拷贝文件夹。shutil.rmtree(path):递归删除文件夹。shutil.move(src, dst):递归移动文件。shutil.make_archive(base_name, format, root_dir):创建压缩包。示例:
import shutil# 拷贝文件shutil.copyfile('f1.log', 'f2.log')# 拷贝文件夹shutil.copytree('folder1', 'folder2')# 删除文件夹shutil.rmtree('folder1') hashlib 模块hashlib 模块用于加密相关操作,提供多种哈希算法,如 MD5、SHA-1、SHA-256 等。其特点是内容相同则哈希值相同,内容改变则哈希值改变,且不可逆推算。
示例:
import hashlib# MD5 哈希hash_obj = hashlib.md5(b'admin', 'utf-8')print(hash_obj.hexdigest())
json 模块json 模块用于将 Python 数据结构序列化为 JSON 格式,适用于跨平台数据交互。其主要函数包括:
json.dumps(obj):将对象序列化为 JSON 字符串。json.loads(s):将 JSON 字符串反序列化为 Python 对象。示例:
import json# 序列化对象data = { 'name': 'Clint', 'age': 18, 'hobby': ['篮球', '运动']}# 序列化为 JSONjson.dump(data, 'data.json')# 反序列化with open('data.json', 'r') as f: loaded_data = json.loads(f.read())print(loaded_data) pickle 模块pickle 模块用于将 Python 对象序列化为字节流,适用于持久化存储和跨平台数据交互。其特点是支持 Python 内置类型和自定义对象的序列化。
示例:
import pickle# 序列化对象data = { 'name': 'Clint', 'age': 18, 'hobby': ['篮球', '运动']}# 序列化为字节流with open('data.pickle', 'wb') as f: pickle.dump(data, f)# 反序列化with open('data.pickle', 'rb') as f: loaded_data = pickle.load(f)print(loaded_data) configparser 模块configparser 模块用于读取和修改配置文件,常用于处理 INI 格式的配置文档。
示例:
import configparserconfig = configparser.ConfigParser()# 读取配置文件config.read('config.ini')# 获取所有节点print(config.sections())# 获取指定节点下的键值对print(config.items('section1'))# 增加节点config.add_section('db', config)config.set('db', 'host', 'localhost')config.write(open('new_config.ini', 'w')) paramiko 模块paramiko 模块用于远程控制操作,支持 SSH 连接、命令执行等功能。其主要功能包括:
示例:
import paramiko# 连接 SSH 服务器ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('192.168.1.1', 22, 'clint', 'password')# 执行命令stdin, stdout, stderr = ssh.exec_command('ls')print(stdout.read())# 关闭连接ssh.close() shelve 模块shelve 模块用于持久化存储 Python 对象,简单易用,适合快速实现数据持久化。
示例:
import shelve# 打开文件f = shelve.open('data.she')# 存储数据f['student1'] = { 'name': 'Clint', 'age': 18, 'hobby': ['篮球', '运动']}# 读取数据print(f['student1']['hobby']) logging 模块logging 模块用于记录日志,支持多种日志级别(如 debug、info、warning 等),并可以指定日志格式和输出文件。
示例:
import logging# 配置日志logging.basicConfig( filename='log.log', format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=logging.DEBUG)# 记录日志logging.debug('这是一个 debug 日志')logging.info('这是一个 info 日志')logging.warning('这是一个 warning 日志')logging.error('这是一个 error 日志')logging.critical('这是一个 critical 日志') 通过以上模块的介绍和示例,可以更好地理解它们的功能及其应用场景。在实际编程中,可以根据项目需求选择合适的模块,提高代码的可读性和复用性。
转载地址:http://llofk.baihongyu.com/