您的位置 首页 > 数码极客

【反斜杠怎么打】python提示:处理文件路径的三种简单方法

原始标题| 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」,待认证通过后,即可获得该课程全部解锁权限。心动不如行动噢~

认证方式:

雷锋网雷锋网雷锋网

关于作者: luda

无忧经验小编鲁达,内容侵删请Email至wohenlihai#qq.com(#改为@)

热门推荐