帕特利布。path('C:').absolute().is_absolute() 返回 False



问题:

>>> from pathlib import Path
>>> Path('C:').absolute().is_absolute()   # Is 'C:' absolute if we try to make it with pathlib?
False
>>> os.path.isabs(os.path.abspath('C:'))  # Is 'C:' absolute if we try to make it with os.path?
True
>>> os.path.isabs('C:')                   # Is 'C:' absolute on it's own?
False
# Correct way to get absolute path as suggested in answers below
>>> Path('C:').resolve()
WindowsPath('C:/Windows/system32')        # We get a folder we have launched Python from
  • 为什么Path.absolute()返回非绝对路径
  • 谁对谁错
  • 额外的问题:哪个函数将windows的驱动器号(C:)封装到路径(C:\),所以os.path.join可以正常工作

示例:

尝试从"路径"one_answers"文件名"中获取一个文件路径,如果该文件位于Windows操作系统磁盘的根目录中,您将难以创建一个功能的路径

>>> a_path = 'C:'
>>> a_file_name = 'foo.txt'
>>> os.path.join(a_path, a_file_name)
'C:foo.txt'
>>> os.path.isabs(os.path.abspath('C:'))
True

如果您在C:\foo.txt之前创建文件,则会增加一些混乱;你会得到:

>>> os.path.exists('C:foo.txt')
False
>>> os.path.exists(os.path.abspath('C:foo.txt'))
False

使用pathlib 的替代执行

>>> from pathlib import Path
>>> Path('C:').joinpath('foo.txt')
WindowsPath('C:too.txt')
>>> Path('C:').joinpath('foo.txt').is_absolute()
False

现实生活情况:

显然,如果有问题的文档位于C:驱动器上的根文件夹中,Cinema4D的Python SDK方法doc.GetDocumentPath()实际上返回C:

相关问题:

  • https://stackoverflow.com/a/35909115/4566456
  • 如何获取路径库的绝对路径。路径对象

absolute()方法实际上不是pathlib.Path文档化的公共API的一部分。它实际上并不起作用,你也不应该使用它。它的源代码中有注释,上面写着";XXX尚未测试"以及";FIXME";。

获得绝对路径的实际、有文档记录的方法是Path.resolve()。我认为一个应该对此输入表现正确。。。但我认为";行为正确";意味着返回C驱动器上当前工作目录的绝对路径。我认为它不会返回'C:\'。此外,与os.path.abspath不同,Path.resolve需要一个实际解析为某个内容的路径,它还将解析符号链接。

如果您想要类似os.path.abspath的东西,请使用os.path.abspath。Pathlib不支持该函数的直接等效项。

相关内容

  • 没有找到相关文章

最新更新