有没有理由在python中避免使用unix样式的相对路径?

时间:2016-05-28 00:45:21

标签: python path

我写了这个:

ancestor_dir = os.path.join(os.path.dirname(__file__), *([os.pardir]*5 + [ancestor_name]))

我在想,为什么我不说

ancestor_dir = os.path.join(os.path.dirname(__file__), "../../../../../", ancestor_name]))

它似乎适用于Windows和Linux,并且更容易理解。

2 个答案:

答案 0 :(得分:3)

除非您希望与经典Mac OS (OS X的前身)保持兼容,否则使用".."代替os.pardir不是问题

  1. 父目录由::
  2. 表示
  3. 目录分隔符由:
  4. 表示
  5. 当前目录也由:
  6. 表示

    您可以通过

    进行检查
    import macpath
    
    print(macpath.pardir) #print parent dir
    print(macpath.curdir) #print current dir
    print(macpath.sep) #print dir separator
    

    os模块从pardir模块导入os.path。 在其他操作系统中导入macpath导入os.path经典Mac OS。同样地,ntpath适用于Windows,posixpath适用于POSIX系统。

    使用os.pardir对于保持代码的可读性也很有用。

    注意:在Windows中使用“../../../../../”是一个坏主意,因为这里的目录分隔符也是硬编码的,windows使用“\ “作为默认目录分隔符(os.sep)。此目录分隔符由os.path.join()使用。因此,使用混合斜线生成的路径看起来很可怕。 没有令人信服的理由阻止您使用,当然可以使用os.path.normpath()

    更正混合斜杠

答案 1 :(得分:0)

使用os.pardir使代码可以移植到非POSIX系统。如果兼容性不是问题,那么它并不重要。但有人可能会说使用os.pardir可以更具可读性;但这太量主观了。