原始标题| python 3 quick tip : the easy way to deal with file paths on windows,MAC and Linux
作者| Adam Geitgey
译者|林肯213(西安交通大学),Dooria
几乎所有计算机都在文件夹名称之间使用反斜杠,但Microsoft Windows使用反斜杠。这给编程带来了一些问题。
这是20世纪80年代初计算机历史上的一次事故。MS-DOS的第一个版本使用斜线指定命令行选项。Microsoft向MS-DOS2.0添加对文件夹的支持时,已使用斜线,因此改用反斜杠。35年后,这种不兼容仍然困扰着我们。
为了使Python代码在Windows和Mac/Linux上同时运行,必须解决这些平台上的特定问题。幸运的是,Python3的新模块pathlib可以轻松处理文件。
以下是使用pathlib处理文件名的一些方法。这使命名任务变得更加容易。
错误的方法:手工构建文件路径
现在假设Python项目有包含所需文件的数据包。
以下代码无效。
这是因为在 Mac平台上使用了Unix风格的斜线硬编码路径。这使Windows用户非常头疼。
从技术上讲,此代码也可以在Windows上运行。因为python在调用open函数时可以识别任何斜线。尽管如此,你不能依赖它。并非所有python库都可以在错误的操作系统中使用错误的斜杠。尤其是在有外部程序或库接口的情况下。
另外,对混合斜杠类型的python支持仅限于Windows,不能反向工作。这意味着代码中的反斜杠在Mac上完全无效。
由于上述原因,使用硬编码路径字符串编写代码应尽可能避免被其他程序员diss使用。
老方法:Python的os.path模块
python OS . path模块为解决这些特定操作系统的文件系统问题提供了有用的工具。
操作系统。您可以使用函数,针对目前的作业系统,使用斜线来建构路径。
上面的代码在Windows和Mac上都有效地运行——,但问题是使用起来很大。每次调用操作系统。如何将路径的各个部分作为单独的字符串参数传递,太麻烦了。
Os.path模块中的大多数函数都与Os相同,所以Python开发人员往往懒得使用这些工具,所以写了很多跨平台的bug,惹怒了用户组。
新方法:Python 3 的 pathlib!
python 3.4引入了用于文件和路径处理的新标准库——pathlib。
要使用Pathlib,请创建一个新的path对象,并传递使用斜线的路径或文件名,其馀的pathlib将知道。
请注意以下两点。
请直接在Pathlib中使用斜线(“/”)。Path对象将斜线转换为当前操作系统必须使用的正确斜线。尼克!
若要在Path对象之后添加内容,请在代码中
使用“/”操作符(也就是除号!?)。跟一遍又一遍地敲os.(a, b)的日子说拜拜吧!如果这就是pathlib做的事情,那它可真是Python的一个不错的补充——但它做的其实更多呢~
比如,我们可以不用调用open或者close之类的函数,而直接读文件的内容:
注:上上部分的例子是有bug的,因为读取的文件没有关闭。但这里的语句则完全避免了这个问题!
pathlib还把最标准的文件操作变得简单易用:
你甚至可以用pathlib来将一个Unix系统的路径转换成Windows格式的路径:
如果你非得用反斜杠还想不出问题呢?好吧…你可以把你的路径声明成Windows格式的,这样pathlib在其他操作系统中依然能把它转换成合适的形式:
如果你还想再6一点?你甚至可以用pathlib来解析文件的相关路径,解析网络共享路径或者生成"file://"格式的URL。下边的例子用四行代码(其中两行还是import)做到了用你的Web浏览器打开一个本地文件:
而这也不过是pathlib的一个小功能而已。pathlib足以替代散落在Python各种模块中的文件相关功能。看看文档,试一下吧~
本文编辑:Pita
英语原文:
想要继续查看该篇文章相关链接和参考文献?
点击【Python小技巧:3个处理文件路径的简单方法】即可访问:
福利大放送——满满的干货课程免费送!
「好玩的Python:从数据挖掘到深度学习」该课程涵盖了从Python入门到CV、NLP实践等内容,是非常不错的深度学习入门课程,共计9节32课时,总长度约为13个小时。。
课程页面:
「计算机视觉基础入门课程」本课程主要介绍深度学习在计算机视觉方向的算法与应用,涵盖了计算机视觉的历史与整个课程规划、CNN的模型原理与训练技巧、计算机视觉的应用案例等,适合对计算机视觉感兴趣的新人。
课程页面:
现AI研习社将两门课程免费开放给社区认证用户,只要您在认证时在备注框里填写「Python」,待认证通过后,即可获得该课程全部解锁权限。心动不如行动噢~
认证方式:
雷锋网雷锋网雷锋网