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个文件路径的简单方法

全局中部横幅
娱乐视频

新浪娱乐视频是新浪旗下的专业娱乐视频内容站点,提供最新娱乐新闻视频、近期明星娱乐新闻视频,明星访谈。新浪娱乐视频汇集海量的电影、电视剧、综艺节目。娱乐圈八卦、明星新闻、大片写真、片场探班、颁奖前线视频无所不包。

鳄鱼皮带,鳄鱼皮钱包,鳄鱼夹包,鳄鱼皮手袋,鳄鱼皮腰带,鳄鱼皮具,鳄鱼皮皮带,鳄鱼钱包,鳄鱼皮制品,双钲贸易,东莞市法彭皮具有限公司

鳄鱼皮带,鳄鱼皮钱包,鳄鱼夹包,鳄鱼皮手袋,鳄鱼皮腰带,鳄鱼皮具,鳄鱼皮皮带,鳄鱼钱包,鳄鱼皮制品,双钲贸易,东莞市法彭皮具有限公司

知百科

提供精准知识问答,各种百科小知识,生活常识问答。

牡丹芍药

菏泽中欣牡丹园艺有限公司是一家专门从事园林绿化种植、加工、销售、出口、售后于一体的企业,公司产品有果木、苗木、花卉、绿植、爬藤等园艺植物。欢迎咨询:13605308985

移动登车桥,固定登车桥,装卸平台,济南恒鼎升降机械有限公司

济南恒鼎升降机械有限公司是一家集设计、研发、生产、销售、安装、服务于一体的升降机械生产服务商。现有产品:移动登车桥、固定登车桥、家用电梯、装卸平台、移动式升降平台、固定式升降平台、导轨式升降平台、铝合金升降平台、车载升降平台、液压登车桥、高空作业车、曲臂式高空作业平台、升降舞台、自行走式升降车、自行走曲臂升降车、自行走直臂升降车、自行走伸缩臂升降车等产品,还可为客户设计合理的各规格型号的特殊产品。

果冻猫

果冻猫科技,是一家以创意设计、技术服务、用户体验、品牌VI设计、互动营销服务商。公司主要为企业和商家提供设计服务、技术开发、小程序开发制作。果冻猫_专注企业品牌建设与技术服务提供商。

央祈科技

央祈(上海)电子科技有限公司是国内较早从事动画设计制作、3D全息视觉影像、触控交互、多媒体数字系统集成的创新技术型服务企业,是一家专注于全息多媒体展览展示的专业设计、生产厂家,依托领先的数字图像技术,为博物馆、展览馆、房地产、城市规划、产品展示等领域提供全方位的创意视觉展示服务

佰格科技

陕西佰格网络科技有限公司是西北地区专业IT软硬件维护服务商,同是也是企业网站、公众号、小程序建设运营推广一站式服务商。

控制面板登录

虚拟主机,我司是专业的虚拟主机域名注册主机租用服务商,全面支持:PHP虚拟主机,ASP虚拟主机,ASP.NET虚拟主机,PERL虚拟主机.近50项全系列网站管理工具。全国依靠的双线、多线机房,全国畅通无阻!

免费SSL证书快速申请

TOPSSL提供正品SSL证书快速申请服务,包括免费SSL证书、DV/OV/EV/国密等多种类型的SSL证书,满足个人网站、企业网站、电商平台等不同需求。支持Positive、GeoTrust、Sectigo、锐安信、沃通等全球知名CA品牌,提供快速签发、便捷安装及专业技术支持,保障网站数据安全,提升用户信任。立即申请,开启HTTPS安全之旅!

全局底部横幅