news 2026/4/15 23:22:10

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/15 10:02:15

同事写了一条 SQL,把 MyBatis 都干翻了。。

前言继上次线上CPU出现了报警,这次服务又开始整活了,风平浪静了没几天,看生产日志服务的运行的时候,频繁的出现OutOfMemoryError,就是我们俗称的OOM,这可还行!频繁的OOM直接会造成服务处于一个不…

作者头像 李华
网站建设 2026/3/30 23:05:24

在数字时代铸造你的“意义货币”:个人价值资产化的3步实践指南

在数字时代铸造你的“意义货币”:个人价值资产化的3步实践指南 引言:当你的技能成为“硬通货” 在杭州的创意市集上,有位手作匠人从不使用收款二维码。她的顾客用“故事交换”购买作品——讲述一个关于传承的故事,就能带走一件蓝染…

作者头像 李华
网站建设 2026/4/12 2:41:45

性能测试能不能做好,要看你有没有性能测试思维

获取性能需求 01 用户数信息 1、调查系统当前和未来使用的用户数 系统用户数 本系统目前注册的用户数,注册用户数并不代表他会每天并且无时无刻的使用着。 在线用户数 同时在线对系统进行操作的用户数量(相当于混合场景) 并发用户数 …

作者头像 李华
网站建设 2026/4/12 8:37:04

【Java基础|Java +Socket +Swing聊天室】

Java Socket 聊天室 - 零基础手把手教程 GitHub地址:https://github.com/RONGX563647/NewChatRoom 本教程面向零基础学习者,从最基础的概念开始,一步步带你完成一个完整的聊天室项目。 目录 准备工作基础知识第一阶段:创建项目第…

作者头像 李华
网站建设 2026/4/16 11:50:58

Spring的自定义注解与处理器

1. 自定义注解的定义 自定义注解是 Java 中的一种元数据标记,允许在代码中添加自定义信息,并能通过反射机制进行处理。我们首先定义一个自定义注解,然后在 Spring 中使用该注解来标识需要处理的类或方法。 示例:定义一个简单的自…

作者头像 李华