我写了这个:
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,并且更容易理解。
答案 0 :(得分:3)
除非您希望与经典Mac OS (OS X的前身)保持兼容,否则使用".."
代替os.pardir
不是问题
::
:
:
您可以通过
进行检查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
可以更具可读性;但这太量主观了。