news 2026/6/15 21:33:16

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/6/15 19:34:29

2026年技巧:测试数据生成的AI优化术

AI驱动测试数据生成的新纪元 在2026年的软件测试领域,AI技术已从辅助工具升级为核心驱动力,尤其在测试数据生成方面展现出革命性突破。传统手动方法耗时且易遗漏边界场景,而AI通过机器学习、深度学习和自然语言处理,能自动创建高…

作者头像 李华
网站建设 2026/6/15 12:14:24

2026年最热门的测试框架集成:软件测试从业者的专业指南

测试框架集成的时代意义 2026年,软件测试领域正经历革命性变革,测试框架的集成(Integration)已成为提升效率、保障质量的核心驱动力。随着AI、云原生和DevOps的深度融合,测试从业者必须掌握热门框架的协同策略&#x…

作者头像 李华
网站建设 2026/6/15 13:10:27

太强了!SpringBoot + QLExpress打造动态规则引擎!

作为一名后端开发,你是否遇到过这样的场景: 运营同学说:"双11活动规则临时调整,满300减60改成满200减50,能马上上线吗?" 产品经理说:"风控策略需要微调一下,这个规则…

作者头像 李华
网站建设 2026/6/15 14:38:01

基于Arduino智能家居环境监测系统

3 系统需求分析 3.1 可行性分析 3.1.1 技术可行性 分析实现基于 Arduino 智能家居环境监测系统所需技术是否成熟、可获取。比如 Arduino 平台开源且资料丰富,有大量现成的函数库可调用,像读取传感器数据、控制执行设备等功能都有成熟实现方式&#xf…

作者头像 李华
网站建设 2026/6/15 14:01:36

失落的乡土:《阿凡达》与《乡土中国》的跨时空深度对话

失落的乡土:《阿凡达》与《乡土中国》的跨时空深度对话 在詹姆斯卡梅隆的《阿凡达》中,潘多拉星球上那片荧光闪烁、万物互联的雨林,常被视作一个纯粹的幻想乌托邦。然而,若将这部科幻巨制与费孝通先生1947年写就的社会学经典《乡…

作者头像 李华