适用于Python的任何平台的Unix路径?

发布于 2021-01-29 16:07:07

Python程序中的所有路径都可以使用“ ..”(用于父目录)和/(用于分隔路径组件),并且在 任何平台上都可以 工作吗?

一方面,我从未在文档中看到过这样的主张(我可能已经错过了),并且os和os.path模块确实提供了以平台不可知的方式处理路径的工具(os.pardir,os.path)。加入……),这让我认为他们在这里是有原因的。

另一方面,您可以在StackOverflow阅读“ ../path/to/file”可在所有平台上使用的信息…

因此,出于可移植性的目的,应始终使用os.pardir,os.path.join和friends还是Unix路径名始终是安全的(取决于可能的字符编码问题)?还是“几乎总是”安全(即在Windows,OS
X和Linux下工作)?

关注者
0
被浏览
38
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    “几乎总是安全的”是正确的。您关心的所有平台今天都可以正常工作,我认为它们不会很快改变其惯例。

    但是,Python具有很高的可移植性,并且在比常规平台上更多的运行。该os模块的原因是为了帮助平台上的事物平滑,但平台确实有不同的要求。

    是否有充分的理由不使用这些os功能?

    os.pardir是自我记录的,而".."不是自我记录的,而os.pardir可能更易于grep

    这是python 1.6的一些文档,当时Mac在所有方面都还是不同的

    Mac,DOS,NT或Posix的OS例程,取决于我们所使用的系统。

    这将导出:-来自posix,nt,dos,os2,mac或ce的所有函数,例如unlink,stat等。-os.path是posixpath,ntpath,macpath或dospath的模块之一-
    os.name是’
    posix’,’nt’,’dos’,’os2’,’mac’或’ce’-os.curdir是代表当前目录的字符串(’。’或’:’)-os.pardir是字符串代表父目录(’..’或’::’)-os.sep是(或最常见的)路径名分隔符(’/’或’:’或’')-os.altsep是备用路径名分隔符(无或’/’)-os.pathsep是$
    PATH等中使用的组件分隔符-os.linesep是文本文件中的行分隔符(’‘或’‘或’‘)-os.defpath是默认搜索可执行文件的路径

    导入和使用“
    os”的程序更有可能在不同平台之间移植。当然,然后它们必须仅使用所有平台定义的功能(例如,unlink和opendir),并将所有路径名操作留给os.path(例如,split和join)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看