news 2026/4/23 11:10:36

Python 常用的内置模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 常用的内置模块

文章目录

    • 1. 文件和目录操作
      • os - 操作系统接口
      • pathlib - 面向对象的路径操作(Python 3.4+)
    • 2. 系统相关
      • sys - 系统相关参数和函数
    • 3. 日期和时间
      • datetime - 日期和时间处理
      • time - 时间访问和转换
    • 4. 数学运算
      • math - 数学函数
      • random - 生成随机数
    • 5. 数据序列化
      • json - JSON 编码和解码
      • pickle - Python 对象序列化
    • 6. 数据压缩和归档
      • zipfile - ZIP 归档处理
    • 7. 网络和互联网
      • urllib - URL 处理
    • 8. 数据类型和集合
      • collections - 容器数据类型
      • itertools - 迭代器工具
    • 9. 正则表达式
      • re - 正则表达式
    • 10. 调试和测试
      • logging - 日志记录
      • pdb - Python 调试器
    • 实用示例项目
      • 文件管理器工具
    • 总结表:最常用的内置模块

Python提供了丰富的内置模块,无需安装即可直接使用。

1. 文件和目录操作

os - 操作系统接口

importos# 文件和目录操作print(os.getcwd())# 获取当前工作目录os.chdir('/path/to/dir')# 改变当前目录os.listdir('.')# 列出目录内容# 路径操作os.path.join('dir','file.txt')# 连接路径os.path.exists('file.txt')# 检查路径是否存在os.path.isdir('dirname')# 检查是否为目录os.path.isfile('filename')# 检查是否为文件os.path.getsize('file.txt')# 获取文件大小# 系统操作os.environ['PATH']# 环境变量os.system('ls -l')# 执行系统命令

pathlib - 面向对象的路径操作(Python 3.4+)

frompathlibimportPath# 创建路径对象p=Path('/home/user/documents')p=Path.cwd()/'file.txt'# 路径拼接# 常用操作p.exists()# 检查是否存在p.is_file()# 是否为文件p.name# 文件名p.parent# 父目录p.suffix# 文件扩展名# 文件操作p.read_text()# 读取文本p.write_text('content')# 写入文本

2. 系统相关

sys - 系统相关参数和函数

importsys# 命令行参数print(sys.argv)# 命令行参数列表# Python 解释器信息print(sys.version)# Python 版本print(sys.platform)# 操作系统平台print(sys.path)# 模块搜索路径# 标准输入输出sys.stdout.write('Hello\n')# 标准输出sys.stderr.write('Error\n')# 标准错误# 退出程序sys.exit(0)# 退出程序

3. 日期和时间

datetime - 日期和时间处理

fromdatetimeimportdatetime,date,time,timedelta# 当前时间now=datetime.now()print(now)# 2024-01-15 10:30:45.123456# 日期时间创建dt=datetime(2024,1,15,10,30,0)d=date(2024,1,15)t=time(10,30,0)# 格式化print(now.strftime('%Y-%m-%d %H:%M:%S'))# 2024-01-15 10:30:45print(now.strftime('%A, %B %d'))# Monday, January 15# 时间计算tomorrow=now+timedelta(days=1)last_week=now-timedelta(weeks=1)# 时间解析dt=datetime.strptime('2024-01-15','%Y-%m-%d')

time - 时间访问和转换

importtime# 时间戳print(time.time())# 当前时间戳(秒)# 休眠time.sleep(2)# 休眠2秒# 结构化时间local_time=time.localtime()print(time.strftime('%Y-%m-%d',local_time))# 性能计时start=time.perf_counter()# 执行一些操作end=time.perf_counter()print(f'耗时:{end-start:.2f}秒')

4. 数学运算

math - 数学函数

importmath# 基本数学函数print(math.sqrt(16))# 平方根: 4.0print(math.pow(2,3))# 幂运算: 8.0print(math.log(100,10))# 对数: 2.0# 三角函数print(math.sin(math.pi/2))# 正弦: 1.0print(math.degrees(math.pi))# 弧度转角度: 180.0# 常数print(math.pi)# π: 3.141592653589793print(math.e)# 自然常数: 2.718281828459045# 取整函数print(math.ceil(4.2))# 向上取整: 5print(math.floor(4.8))# 向下取整: 4

random - 生成随机数

importrandom# 随机数print(random.random())# [0.0, 1.0) 的随机浮点数print(random.randint(1,10))# [1, 10] 的随机整数# 序列操作items=[1,2,3,4,5]random.shuffle(items)# 打乱序列print(random.choice(items))# 随机选择一个元素print(random.sample(items,3))# 随机选择多个不重复元素# 随机种子(用于重现结果)random.seed(42)# 设置随机种子

5. 数据序列化

json - JSON 编码和解码

importjson# Python 对象转 JSON 字符串data={'name':'张三','age':25,'scores':[90,85,95]}json_str=json.dumps(data,ensure_ascii=False,indent=2)print(json_str)# JSON 字符串转 Python 对象parsed_data=json.loads(json_str)print(parsed_data['name'])# 文件操作withopen('data.json','w',encoding='utf-8')asf:json.dump(data,f,ensure_ascii=False)withopen('data.json','r',encoding='utf-8')asf:loaded_data=json.load(f)

pickle - Python 对象序列化

importpickle data={'name':'李四','age':30}# 序列化到文件withopen('data.pkl','wb')asf:pickle.dump(data,f)# 从文件反序列化withopen('data.pkl','rb')asf:loaded_data=pickle.load(f)

6. 数据压缩和归档

zipfile - ZIP 归档处理

importzipfile# 创建 ZIP 文件withzipfile.ZipFile('archive.zip','w')aszf:zf.write('file1.txt')zf.write('file2.txt')# 读取 ZIP 文件withzipfile.ZipFile('archive.zip','r')aszf:print(zf.namelist())# 列出所有文件zf.extractall('extracted')# 解压所有文件

7. 网络和互联网

urllib - URL 处理

fromurllibimportrequest,parse# 发送 HTTP 请求response=request.urlopen('https://httpbin.org/json')data=response.read().decode('utf-8')print(data)# URL 编码解码params={'q':'python 教程','page':1}encoded=parse.urlencode(params)print(encoded)# q=python+%E6%95%99%E7%A8%8B&page=1

8. 数据类型和集合

collections - 容器数据类型

fromcollectionsimportCounter,defaultdict,deque,namedtuple# Counter - 计数器words=['apple','banana','apple','orange','banana','apple']word_count=Counter(words)print(word_count.most_common(2))# [('apple', 3), ('banana', 2)]# defaultdict - 带默认值的字典dd=defaultdict(list)dd['fruits'].append('apple')dd['fruits'].append('banana')print(dd['fruits'])# ['apple', 'banana']# deque - 双端队列dq=deque([1,2,3])dq.appendleft(0)# 左侧添加dq.append(4)# 右侧添加print(dq)# deque([0, 1, 2, 3, 4])# namedtuple - 命名元组Point=namedtuple('Point',['x','y'])p=Point(10,20)print(p.x,p.y)# 10 20

itertools - 迭代器工具

importitertools# 无限迭代器counter=itertools.count(start=1,step=2)# 1, 3, 5, 7...# 组合迭代器# 排列perms=itertools.permutations('ABC',2)# AB, AC, BA, BC, CA, CB# 组合combs=itertools.combinations('ABC',2)# AB, AC, BC# 分组data=[1,1,2,2,3,3]groups=itertools.groupby(data)# 分组相邻重复元素

9. 正则表达式

re - 正则表达式

importre# 匹配text='我的电话是: 138-1234-5678'pattern=r'\d{3}-\d{4}-\d{4}'match=re.search(pattern,text)ifmatch:print('找到电话:',match.group())# 138-1234-5678# 查找所有emails='a@test.com, b@example.com'email_pattern=r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'emails_found=re.findall(email_pattern,emails)# 替换text='Python is great, I love Python'new_text=re.sub(r'Python','JavaScript',text)print(new_text)# JavaScript is great, I love JavaScript

10. 调试和测试

logging - 日志记录

importlogging# 配置日志logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',filename='app.log')# 记录日志logging.debug('调试信息')logging.info('一般信息')logging.warning('警告信息')logging.error('错误信息')logging.critical('严重错误')

pdb - Python 调试器

importpdbdefproblematic_function(x,y):pdb.set_trace()# 设置断点result=x/yreturnresult# 常用 pdb 命令:# n - 执行下一行# c - 继续执行# q - 退出调试# p variable - 打印变量值

实用示例项目

文件管理器工具

importosimportshutilfrompathlibimportPathfromdatetimeimportdatetimeclassFileManager:def__init__(self,base_path='.'):self.base_path=Path(base_path)deflist_files(self,pattern='*'):"""列出文件"""files=list(self.base_path.glob(pattern))forfileinfiles:size=file.stat().st_size mtime=datetime.fromtimestamp(file.stat().st_mtime)print(f'{file.name:20}{size:10}{mtime:%Y-%m-%d%H:%M}')defbackup_files(self,pattern='*.txt',backup_dir='backup'):"""备份文件"""backup_path=self.base_path/backup_dir backup_path.mkdir(exist_ok=True)forfileinself.base_path.glob(pattern):shutil.copy2(file,backup_path/file.name)print(f'备份:{file.name}')deffind_large_files(self,size_mb=10):"""查找大文件"""size_limit=size_mb*1024*1024forfileinself.base_path.rglob('*'):iffile.is_file()andfile.stat().st_size>size_limit:size_mb=file.stat().st_size/(1024*1024)print(f'{file.name}-{size_mb:.1f}MB')# 使用示例if__name__=='__main__':fm=FileManager()fm.list_files('*.py')fm.find_large_files(5)

总结表:最常用的内置模块

模块主要用途使用频率
os操作系统接口⭐⭐⭐⭐⭐
sys系统参数和函数⭐⭐⭐⭐
datetime日期时间处理⭐⭐⭐⭐⭐
jsonJSON 数据处理⭐⭐⭐⭐⭐
pathlib面向对象路径操作⭐⭐⭐⭐
collections扩展容器类型⭐⭐⭐⭐
re正则表达式⭐⭐⭐
math数学运算⭐⭐⭐
random随机数生成⭐⭐⭐
itertools迭代器工具⭐⭐

👉点击进入我的网站

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 15:50:07

【人工智能学习-AI入试相关题目练习-第十四次】

人工智能学习-AI入试相关题目练习-第十四次1-前言3-问题题目训练【模擬問題①】(既出近似:探索アルゴリズム)問題1【模擬問題②】(既出近似:Q学習・方策)問題2【予測問題①】(新傾向&#xff1a…

作者头像 李华
网站建设 2026/4/19 21:24:57

国标GB/T4857.5-1992跌落测试,GB/T4857.5跌落试验标准讲解

GB/T 4857.5-1992《包装 运输包装件 跌落试验方法》作为运输包装件基本试验体系的关键标准,等效采用ISO 2248:1985标准,为包装件抗垂直冲击性能检测提供了统一、规范的技术依据,是保障产品流通安全的重要技术支撑。 该试验的核心目的的是模拟…

作者头像 李华
网站建设 2026/4/5 22:35:53

Python自动化测试:线上流量回放

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快在自动化测试中,线上流量回放是一项关键技术,可以模拟真实用户的请求并重现线上场景,验证系统的性能和稳定性。本文将介绍Python…

作者头像 李华
网站建设 2026/4/4 4:46:58

一个注解搞定接口返回数据脱敏...

01 背景 下午惬意时光,突然产品小姐姐走到我面前,打断我短暂的摸鱼 time,企图与我进行深入交流,还好我早有防备没有闪,打开瑞 star 的点单页面,暗示没有一杯 coffee 解决不了的需求。 需求是某些接口返回…

作者头像 李华
网站建设 2026/4/15 16:21:00

如何设计接口测试用例?

接口测试用例设计其实跟功能测试用例设计是类似的,从根本上来说都是验证产品功能的实现情况。但是功能测试偏向于测试前端数据的展示、业务逻辑,但是有些情况是前端无法模拟的(如前端的支付金额无法为负值),此时就需要…

作者头像 李华