发行:
>>> 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 fromPath.absolute()如何返回非绝对路径?(C:)封装到路径(C:\\),这样os.path.join才能正常工作?示例:
尝试从“路径”和“文件名”中获取文件路径,如果该文件位于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使用路径库替代执行
>>> 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:。
相关公式:
发布于 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不支持与该函数直接等效的功能。
https://stackoverflow.com/questions/72846126
复制相似问题