博客
关于我
python基础---->常用模块
阅读量:796 次
发布时间:2023-03-07

本文共 5446 字,大约阅读时间需要 18 分钟。

Python 模块解析与实用示例

在 Python 编程中,模块是代码重用和代码管理的重要概念。一个模块可以看作是一个包含了一部分功能实现的代码集合,类似于函数式编程中的函数,通过模块可以实现代码的复用和代码之间的解耦。对于复杂的功能实现,往往需要多个模块协同工作。以下将从 sysostimerandomreshutilhashlibjsonpickleconfigparserparamikoshelvelogging 等模块入手,分析其功能特点及常用用法。


一、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': ['篮球', '运动']
}
# 序列化为 JSON
json.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 configparser
config = 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 连接、命令执行等功能。其主要功能包括:

  • 连接 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/

你可能感兴趣的文章
Python 打开文件注意事项
查看>>
python 批量修改文件名_python windows下批量修改文件名
查看>>
Python 抓取网页乱码问题 以及EXCEL乱码
查看>>
python 抓取网页内容
查看>>
python 按照当前日期创建文件
查看>>
Python 接口并发测试详解
查看>>
Python 接口自动化 —— requests框架
查看>>
python 接口自动化数据结构(如列表、字典、元组)
查看>>
Python 接口自动化测试中的深拷贝与浅拷贝~
查看>>
Python 接口自动化测试中的高阶函数
查看>>
python 控制 cmd 命令行颜色
查看>>
Python 操作 Azure Blob Storage
查看>>
Python 操作 Excel 全攻略 | 包括读取、写入、表格操作、图像输出和字体设置
查看>>
Python 操作 JMeter 探索:pymeter 实操指南
查看>>
Python 操作 Redis
查看>>
Python 操作Mysql(PyMysql)
查看>>
Python 操作Redis
查看>>
Python 操作sqlite数据库及保存查询numpy类型数据(一)
查看>>
Python 操作sqlite数据库及保存查询numpy类型数据(二)
查看>>
Python 操作数据库
查看>>