尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python康复训练——常用标准库
装好 Python 就自带一套官方工具箱。这篇把最常用的几个标准库过一遍并把它串成 4 个能直接用的小工具。代码都来自实战片段路径注释标了出处照着敲就能跑。一、为什么要有标准库Python装完就自带一大堆功能模块叫标准库Standard Library。一个模块就是一个.py文件里面是一组相关函数/类把代码按逻辑拆开复用性和可维护性都上来了。它的三个硬优势零安装import即用不用pip部署到哪台机器都不会缺依赖。跨平台同一套os.path.join()在 Windows 和 Linux 上都能正确拼路径不用自己处理反斜杠。经过毒打标准库是千万项目磨出来的稳定性远超你自己手搓的轮子。判断原则能用标准库干净解决的先别急着引第三方库。除非像urllib标准库明显比requests第三方啰嗦这种明确场景。二、sys和解释器本身对话WHY当你想读命令行参数、强制退出程序、临时改模块搜索路径、或重定向标准流时找sys。它是你和 Python 解释器之间的后门。核心成员sys.argv命令行参数列表argv[0]是脚本名后面才是真正传进来的参数。sys.exit()主动退出程序可在参数里带退出信息。sys.path模块搜索路径列表往里append一个路径就能 import 到那里的模块。sys.stdin/sys.stdout/sys.stderr三个标准流错误信息走stderr才专业。# ch05-lib/Test01_sys.pyimportsys# 获取命令行参数iflen(sys.argv)1:print(f脚本名:{sys.argv[0]})print(f第一个参数:{sys.argv[1]})else:print(请提供命令行参数)# 添加模块路径sys.path.append(/path/to/my/modules)# 模块搜索路径print(sys.path)# 输出到标准错误sys.stderr.write(这是一个错误信息\n)# 退出程序# sys.exit(程序退出)命令行跑python Test01_sys.py a b c会依次打印脚本名、a以及拼接后的搜索路径。注意argv永远从脚本身开始取用户输入要从argv[1]起。三、os跨平台操作文件系统WHY文件/目录的增删查改、路径拼接、环境变量读取——凡是跟操作系统打交道的事别手写字符串路径交给os它在不同系统上自动适配分隔符。常用方法os.getcwd()/os.chdir(path)获取 / 切换当前工作目录。os.listdir(path)列出目录下所有条目。os.makedirs(path, exist_okTrue)递归建多层目录exist_ok防止重复建报错。os.path.join()跨平台路径拼接永远用它别手拼/或\。os.path.exists(path)判存在。os.environ环境变量字典。# ch05-lib/Test02_os.pyimportosprint(当前目录:,os.getcwd())# 创建目录exist_okTrue 避免重复运行报错os.makedirs(test_dir/sub_dir,exist_okTrue)# 列出当前目录文件filesos.listdir(.)print(文件列表:,files)# 路径拼接Windows/Linux 通吃file_pathos.path.join(test_dir,sub_dir,test.txt)print(完整路径:,file_path)# 检查文件是否存在再写入ifnotos.path.exists(file_path):withopen(file_path,w)asf:f.write(Hello, OS!)else:print(文件已存在)# 读取环境变量print(PATH:,os.environ.get(PATH))四、urllib标准库自带的 HTTP 客户端WHY不发网络请求也能跑的最小依赖。urllib能完成 GET/POST、URL 解析不引第三方包就能联网。真实项目里很多人换requests更简洁但懂urllib才看得懂那些老代码和报错。子模块分工urllib.request打开并读取 URL发请求。urllib.parse拼接 / 解析 URL 参数。urllib.error请求异常类。# ch05-lib/Test03_urllib.pyimporturllib.requestimporturllib.parse# 发送 GET 请求urlhttps://httpbin.org/getresponseurllib.request.urlopen(url)dataresponse.read().decode(utf-8)print(data)print(-*80)# 发送 POST 请求表单编码后用 Request 包装dataurllib.parse.urlencode({key:value}).encode(utf-8)requrllib.request.Request(https://httpbin.org/post,datadata)responseurllib.request.urlopen(req)print(response.read().decode(utf-8))print(-*80)# 解析 URLparsedurllib.parse.urlparse(https://example.com:8080/path?query1)print(parsed.scheme,parsed.netloc,parsed.path)小结urllib写起来比requests啰嗦GET 都要urlopenreaddecode三连但它零依赖。日常开发用requests更爽面试/读旧代码时urllib跑不掉。五、json程序与世界交换数据的通用语WHY配置文件、API 响应、前后端通信——JSON是工业标准。json模块负责在 Python 对象dict/list和 JSON 字符串之间互转。四个主力方法json.dumps(obj)Python 对象 → JSON 字符串。json.loads(s)JSON 字符串 → Python 对象。json.dump(obj, file)直接写进文件。json.load(file)从文件读并解析。# ch05-lib/Test04_json.pyimportjson# Python 对象转 JSON 字符串data{name:Alice,age:30,is_student:False}json_strjson.dumps(data,indent2,ensure_asciiFalse)print(json_str)# JSON 字符串转回 Python 对象data_backjson.loads(json_str)print(data_back)# 写入文件withopen(data.json,w,encodingutf-8)asf:json.dump(data,f,indent2,ensure_asciiFalse)# 从文件读取withopen(data.json,r,encodingutf-8)asf:loaded_datajson.load(f)print(loaded_data)JSON ↔ Python 类型对照表JSONPythonobjectdictarrayliststringstrnumber(int)intnumber(real)floattrueTruefalseFalsenullNone两个坑先记着dumps默认ensure_asciiTrue中文会被转成\uXXXX要中文正常显示必须传ensure_asciiFalsedump/load针对文件对象dumps/loads针对字符串别混。六、time 与 datetime两个时间模块怎么选WHY时间处理有两套工具分工明确——time底层、轻量基于Unix 时间戳1970-01-01 起的秒数。适合简单计时、sleep、时间戳获取。datetime面向对象封装了日期、时间、时间间隔。适合做日期加减、格式化输出、解析时间字符串。# ch05-lib/Test05_time.pyimporttimeprint(时间戳:,time.time())# 当前秒级时间戳nowtime.localtime()formattedtime.strftime(%Y-%m-%d %H:%M:%S,now)# 格式化为可读字符串print(格式化时间:,formatted)ttime.strptime(2021-04-03 10:00:00,%Y-%m-%d %H:%M:%S)# 解析回去print(解析后时间结构:,t)print(time.strftime(%H:%M:%S,time.localtime()))print(暂停 2 秒...)time.sleep(2)# 阻塞当前线程print(time.strftime(%H:%M:%S,time.localtime()))# ch05-lib/Test06_datetime.pyfromdatetimeimportdatetime,date,time,timedelta nowdatetime.now()print(现在:,now)dtdatetime(2021,4,3,15,30,0)print(指定时间:,dt)tomorrownowtimedelta(days1)# 日期加减靠 timedeltaprint(明天:,tomorrow)print(格式化:,now.strftime(%Y年%m月%d日 %H:%M:%S))parsed_dtdatetime.strptime(2021-04-03 15:40:00,%Y-%m-%d %H:%M:%S)print(解析时间:,parsed_dt)print(今天:,date.today())选择口诀要算差了几天/几小时用datetime.timedelta要打时间戳、计个时、睡两秒用time。七、argparse把命令行参数管起来WHY手动解析sys.argv容易漏边界、难校验类型。argparse自动生成--help、做类型转换、标记必填项专业命令行工具都靠它。# ch05-lib/Test07_argparse.pyimportargparse parserargparse.ArgumentParser(description一个示例程序)parser.add_argument(--name,typestr,requiredTrue,help你的名字)parser.add_argument(--age,typeint,default18,help年龄)parser.add_argument(--verbose,actionstore_true,help详细模式)parser.add_argument(filename,help文件名)# 位置参数无 -- 前缀argsparser.parse_args()print(f名字:{args.name})print(f年龄:{args.age})print(f文件名:{args.filename})ifargs.verbose:print(详细模式已开启)命令行python Test07_argparse.py info.txt --name lao8 --age 18 --verbose。注意filename是位置参数直接跟在后面--name/--age是可选参数--verbose是开关store_true出现即为 True。缺了requiredTrue的--nameargparse会直接报错退出并打印用法。小结标准库是 Python 自带的生产力工具箱——sys管解释器、os管文件系统、urllib管网络、json管数据交换、time/datetime管时间、argparse管命令行。记住三条路径永远用os.path.joinJSON 中文必带ensure_asciiFalse命令行参数优先用argparse而非手撕sys.argv。把这套用熟80% 的脚本类需求都能在标准库里解决不用急着装包。
RELATED

相关推荐

MD编辑器文字转语音:技术文档智能朗读方案实现

MD编辑器文字转语音:技术文档智能朗读方案实现

作为一名技术开发者,你有没有遇到过这样的场景:深夜调试代码时眼睛酸痛,却还要逐字检查技术文档;通勤路上想学习新框架,但盯着手机屏幕实在不方便;或者团队协作时,希望技术文档能有更生动的呈现…

📅 2026/8/22 15:36:51
Unity Motion Matching高效实现:从原理到实战的次世代动画系统构建

Unity Motion Matching高效实现:从原理到实战的次世代动画系统构建

1. 项目概述:为什么说Motion Matching是游戏动画的未来? 如果你是一名Unity开发者,尤其是专注于角色动画和动作系统的,那么“Motion Matching”(运动匹配)这个词对你来说一定不陌生。它早已不是实验室里的概…

📅 2026/9/8 13:45:19
算力市场下半场:从资源租赁到服务化运营的转型策略

算力市场下半场:从资源租赁到服务化运营的转型策略

算力市场这半年,最明显的变化是从“有资源就能赚钱”转向“会运营才能持续”。如果你上半年靠出租闲置算力或简单投资获得了收益,下半年可能要重新调整策略了。这篇文章不是预测市场走势,而是从实际参与者的角度,拆解当前算力供需…

📅 2026/9/14 19:24:41
MORE NEWS

更多资讯

📰

GHelper 如何用 10MB 轻量开源工具,三步接管华硕笔记本的性能与风扇

GHelper 如何用 10MB 轻量开源工具,三步接管华硕笔记本的性能与风扇 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook…

📰

永久在线自托管CRM实战:DeskcommCRM私有部署与团队协作指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

免费AI课程架构揭秘:course-structure.json 单一数据源设计全解析

免费AI课程架构揭秘:course-structure.json 单一数据源设计全解析 【免费下载链接】free-ai-courses Interactive course teaching Product Managers how to use Claude Code effectively 项目地址: https://gitcode.com/GitHub_Trending/cl/free-ai-courses …

📰

Earthworm 游戏化连词成句:开源英语练习场,十分钟本地跑起来

Earthworm 游戏化连词成句:开源英语练习场,十分钟本地跑起来 【免费下载链接】earthworm Learning English through the method of constructing sentences with conjunctions 项目地址: https://gitcode.com/GitHub_Trending/ea/earthworm Earth…

📰

InvenTree 开源库存管理系统:本地快速部署与实用指南

InvenTree 开源库存管理系统:本地快速部署与实用指南 【免费下载链接】InvenTree Open Source Inventory Management System 项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree InvenTree 是一款开源库存管理系统,面向管理电子元件、机…

📰

Atlas 300V 24G部署YOLOv8实战:从环境搭建到推理优化

最近帮一个视频分析项目组把YOLOv8检测服务从GPU迁移到Atlas 300V上,整个过程折腾了快两周,踩了不少坑。现在项目已经稳定跑了一个多月了,趁热把这块推理卡的真实表现、环境搭建流程和部署YOLO的完整方案写出来。如果你正准备用Atlas 300V 24…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬