gpt4 book ai didi

python - abspath 如何确定路径是否为相对路径?

转载 作者:行者123 更新时间:2023-11-28 18:38:33 25 4
gpt4 key购买 nike

我知道 abspath 可以获取一个文件或一组相关文件,并通过在当前目录前添加它们来为它们创建完整路径,如以下示例所示:

>>> os.path.abspath('toaster.txt.')
'C:\\Python27\\Lib\\idlelib\\toaster.txt'

>>> os.path.abspath('i\\am\\a\\toaster.txt.')
'C:\\Python27\\Lib\\idlelib\\i\\am\\a\\toaster.txt'

并且提供的完整路径将被识别为绝对路径,而不是预先添加此路径:

>>> os.path.abspath('C:\\i\\am\\a\\toaster.txt.')
'C:\\i\\am\\a\\toaster.txt'
>>> os.path.abspath('Y:\\i\\am\\a\\toaster.txt.')
'Y:\\i\\am\\a\\toaster.txt'

我的问题是 abspath 是如何知道这样做的?这是在 Windows 上,它是否在开头检查“@:”(其中 @ 是任何字母字符)?

如果是这样,其他操作系统如何确定它? Mac 的“/Volumes/”路径作为目录不太容易区分。

最佳答案

引用implementation in CPython , Windows 95 和 Windows NT 上的绝对路径是这样检查的:

# Return whether a path is absolute. 
# Trivial in Posix, harder on Windows.
# For Windows it is absolute if it starts with a slash or backslash (current
# volume), or if a pathname after the volume-letter-and-colon or UNC-resource
# starts with a slash or backslash.


def isabs(s):
"""Test whether a path is absolute"""
s = splitdrive(s)[1]
return len(s) > 0 and s[0] in _get_bothseps(s)

如果 _getfullpathname 不可用,则此函数由 abspath 调用。不幸的是,我找不到 _getfullpathname 的实现。

abspath的实现(如果_getfullpathname不可用):

def abspath(path): 
"""Return the absolute version of a path."""
if not isabs(path):
if isinstance(path, bytes):
cwd = os.getcwdb()
else:
cwd = os.getcwd()
path = join(cwd, path)
return normpath(path)

关于python - abspath 如何确定路径是否为相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com