3个处理文件路径的简单方法 Python小技巧 (文件的处理)

文章编号:44041 最新资讯 2024-12-09 python

Python小技巧:3个处理路径的简单方法

几乎所有计算机在文件夹名称间使用的都是正斜杠,但微软Windows使用的是却反斜杠, 这不免造成了编程的一个小烦恼。

Python小技巧:3个处理路径的简单方法

这是1980年代早期,计算机史上的一个意外。MS-DOS的第一个版本使用正斜杠来指定命令行选项。当微软在MS-DOS2.0中增加对文件夹的支持时,因为正斜杠已经被使用了,所以使用反斜杠代替。三十五年后,这种不兼容仍旧困扰着我们。

如果希望你的Python代码能够同时在Windows和Mac/Linux上运行,你需要解决这类平台的特定问题。幸运的是,Python3的新模块pathlib可以使文件操作变得更简单。

以下是一些使用pathlib处理文件名的方法,它可以使命名操作变得简单得多。

错误的方法:手工构建文件路径

假设现在你有一个数据包,其中包含了你的Python项目里需要的文件。

Python小技巧:3个处理路径的简单方法

Python小技巧:3个处理路径的简单方法

请注意,因为是在Mac平台上,我使用了Unix风格的正斜杠硬编码路径。这会让Windows用户非常头疼。

从技术上讲,这个代码在Windows上也能运行,因为Python会在调用open()函数时识别出任何一种斜杠。即便如此,你也不应该依赖它。不是所有的python库都可以在错误的操作系统上使用错误的斜杠,特别是当它们有外部程序或库接口时。

并且,Python对混合斜杠类型的支持仅限Windows,它无法反向工作。也就是说,代码中的反斜杠将在Mac上完全失效。

Python小技巧:3个处理路径的简单方法

出于上述原因以及其他更多的原因,使用硬编码的路径字符串编写代码会被其他程序员diss的,应该尽量避免。

Python的os.path模块提供了很多有用的工具以帮助我们处理这些面向特定操作系统的文件系统问题。

你可以用os.path.join()函数来针对当前操作系统正确地使用斜杠来构建路径:

Python小技巧:3个处理路径的简单方法

上面的代码在Windows和Mac都能有效工作——但问题就是用起来很让人头大。每次调用os.path.join()把路径中的每一部分作为一个独立的字符串参数传进去的办法实在太麻烦了。

因为os.path模块的大部分函数都像os.path.join()这样笨拙,Python开发者们经常就懒得用这些工具,结果写了一堆跨平台bug,还惹恼了一群用户。

Python 3.4 引入了一个用于处理文件和路径的新标准库——pathlib,而且很好用!

要用pathlib,只要新建一个Path()对象并传入使用正斜杠的路径或文件名,剩下的pathlib都帮你搞定:

Python小技巧:3个处理路径的简单方法

如果这就是pathlib做的事情,那它可真是Python的一个不错的补充——但它做的其实更多呢~

比如,我们可以不用调用open()或者close()之类的函数,而直接读文件的内容:

Python小技巧:3个处理路径的简单方法

注:上上部分的例子是有bug的,因为读取的文件没有关闭。但这里的语句则完全避免了这个问题!

pathlib还把最标准的文件操作变得简单易用:

Python小技巧:3个处理路径的简单方法

你甚至可以用pathlib来将一个Unix系统的路径转换成Windows格式的路径:

Python小技巧:3个处理路径的简单方法

如果你非得用反斜杠还想不出问题呢?好吧…你可以把你的路径声明成Windows格式的,这样pathlib在其他操作系统中依然能把它转换成合适的形式:

Python小技巧:3个处理路径的简单方法

如果你还想再6一点?你甚至可以用pathlib来解析文件的相关路径,解析网络共享路径或者生成"file://"格式的URL。下边的例子用四行代码(其中两行还是import)做到了用你的Web浏览器打开一个本地文件:

Python小技巧:3个处理路径的简单方法

而这也不过是pathlib的一个小功能而已。pathlib足以替代散落在Python各种模块中的文件相关功能。看看文档,试一下吧~

英语原文:

想要继续查看该篇文章相关链接和参考文献?

点击【 Python小技巧:3个处理文件路径的简单方法 】即可访问:

福利大放送——满满的干货课程免费送!

「好玩的Python:从数据挖掘到深度学习」该课程涵盖了从Python入门到CV、NLP实践等内容,是非常不错的深度学习入门课程,共计9节32课时,总长度约为13个小时。。

课程页面:

「计算机视觉基础入门课程」本课程主要介绍深度学习在计算机视觉方向的算法与应用,涵盖了计算机视觉的历史与整个课程规划、CNN的模型原理与训练技巧、计算机视觉的应用案例等,适合对计算机视觉感兴趣的新人。

课程页面:

现AI研习社将两门课程免费开放给社区认证用户,只要您在认证时在备注框里填写「Python」,待认证通过后,即可获得该课程全部解锁权限。心动不如行动噢~

认证方式:

原创文章,未经授权禁止转载。详情见 转载须知 。

Python小技巧:3个处理路径的简单方法


本文地址: /article/cdaf8d43267311834baf.html
全局中部横幅
全局中部横幅
GO收录(gosl.cn) - 自动秒收录免费分类目录信息软文发布网址提交

一个各类信息免费发布自动秒收录的网站,可以发布外链交换,行业分类资讯信息,免费软文发布提交正规网址帮你进行快速收录同时支持网址自动收录。

贵州163_163贵州人事考试信息网_贵州163网-163贵州事业单位考试信息网_公务员招考_事业编招聘_教师招聘_特岗教师招聘_医疗卫生人才招聘_国企招聘

贵州163,163贵州人事考试信息网,163贵州事业单位考试信息网,贵州163人才信息招聘网,贵州人事考试信息网,贵州事业单位招聘网,163贵州招聘吧有最新招聘信息和最新考试信息,贵阳、遵义、安顺、六盘水、铜仁、黔南、黔东南、黔西南招聘考试信息及考试培训信息,公务员,事业单位招聘,教师招聘,特岗教师,贵州卫生人才招聘,国企招聘。

酒店设备回收_空调电脑回收_废旧物资回收_实验设备回收_旧设备回收_电子设备回收_恒林再生资源_恒林(广州)再生资源回收有限公司

恒林(广州)再生资源回收有限公司提供酒店回收,空调回收,电脑回收,库存物资回收,稀有金属回收,有色金属回收,医疗设备回收,实验设备回收,旧设备回收,电子设备回收各种废品回收等,可提供上门回收服务,欢迎来电咨询。

华创网络_八哥问答,生活百科知识问答平台

八哥问答www.12606.com汇聚全民智慧,用大众的经验和知识,为网友提供日常生活学习知识解答。

彩钢卷_彩钢卷价格_彩涂卷批发-鼎固彩涂卷厂

鼎固薄钢是一家彩钢卷生产厂家,产品涵盖860多个规格型号彩钢卷,彩涂卷,镀锌,PVDF氟碳彩板,是华东地区彩涂卷生产基地,广泛应用于包装、家电、建筑及装饰材料,现货足,发货快,颜色及尺寸均可定制。

昆山渝楷五金弹簧有限公司

昆山市渝楷五金弹簧有限公司于2001年在昆山正式设立,公司位于江苏省昆山市巴城镇京阪路1399号,投资总额1000万美元,专业从事集精密五金弹簧、弹片的开发、设计及制造。

金年会|金年会·jinnian(金子招牌)诚信至上

金年会-金字招牌,信誉至上简称“金年会”是中国电子竞技职业技能教育的标杆性企业,金年会|金字招牌主要从事于电子竞技职业教育和电子竞技赛事,同时jinnianhui·金年会为您提供登录入口、首页登录、最新网址、在线网站、网页版、手机版、全站APP下载等多种便捷服务,是目前国内环境最好,最具权威性的国际电竞产业基

聚优网 - 优秀的实用文写作网站

聚优网是优秀的实用文写作网站,为您提供优秀的范文写作模板和素材,包含教学总结、教学计划、工作总结、工作计划、简历模板、工作方案、工作报告等,是您写作的好帮手和素材库。

SDWAN-异地组网-海外专线-SDWAN广域网-「云杰通信」

云杰通信是专业SD-WAN解决方案服务商,提供高性能sdwan异地组网服务与海外网络加速线路,致力于为国内政企单位提供灵活可靠的端到端专线网络连接服务,打造安全稳定的跨境办公网络环境,解决异地组网及海外互联网互通难题.热线电话:136-3177-9516.

不锈钢沟槽管件-卡压式管件-不锈钢水管_鑫洁不锈钢13287095171

山东鑫洁不锈钢有限公司是一家生产不锈钢水管,不锈钢沟槽管件,不锈钢卡压管件的公司。产品型号齐全,欢迎前来咨询。联系电话:13287095171。

吉釉网络科技资讯科技资讯 - 科技资讯知识分享综合服务平台

吉釉网络 科技资讯科技资讯为你分享科技,电脑,汽车,智能,数码,互联网,it业界,行业资讯等全方位的资讯信息

NBA直播_NBA免费直播在线直播_NBA直播免费在线高清直播-24直播网

✳️24直播网✳️免费为广大网友推荐NBA直播,NBA免费直播在线直播,为了给您提供流畅的观看直播体验,本网站聚合超清信号源,中文解说24小时不间断为您提供:NBA、中超、英超、德甲、西甲、法甲、意甲、等直播!包括国内外各大热门体育赛事直播。

全局底部横幅