首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pathlib.Path('C:').absolute().is_absolute()返回False

pathlib.Path('C:').absolute().is_absolute()返回False
EN

Stack Overflow用户
提问于 2022-07-03 11:33:43
回答 1查看 179关注 0票数 2

发行:

代码语言:javascript
复制
>>> 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()如何返回非绝对路径?
  • 谁对谁错了?
  • 附加问题:哪个函数将窗口的驱动器号(C:)封装到路径(C:\\),这样os.path.join才能正常工作?

示例:

尝试从“路径”和“文件名”中获取文件路径,如果该文件位于Windows磁盘的根目录中,您将很难创建一个功能良好的路径

代码语言:javascript
复制
>>> 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上创建了该文件,则需要添加一点混乱;您将得到:

代码语言:javascript
复制
>>> os.path.exists('C:foo.txt')
False
>>> os.path.exists(os.path.abspath('C:foo.txt'))
False

使用路径库替代执行

代码语言:javascript
复制
>>> from pathlib import Path
>>> Path('C:').joinpath('foo.txt')
WindowsPath('C:too.txt')
>>> Path('C:').joinpath('foo.txt').is_absolute()
False

现实生活情境:

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

相关公式:

EN

回答 1

Stack Overflow用户

发布于 2022-07-03 11:39:32

absolute()方法实际上不是pathlib.Path文档中的公共API的一部分。它不太管用,你也不应该用它。它在源代码上有评论说"XXX还没被测试过!“还有“固定”。

获取绝对路径的实际文档化方法是Path.resolve()。我认为对于这种输入,一个人的行为应该是正确的。但我认为“行为正确”意味着返回到C驱动器上当前工作目录的绝对路径。我不认为它会返回'C:\\'。而且,与os.path.abspath不同,Path.resolve需要一条实际解析为某物的路径,并且它还将解析符号链接。

如果您想要像os.path.abspath这样的行为,请使用os.path.abspath。Pathlib不支持与该函数直接等效的功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72846126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档