gpt4 book ai didi

python - os.path.join() 是否符合预期行为

转载 作者:行者123 更新时间:2023-12-01 05:10:04 25 4
gpt4 key购买 nike

示例 1,其中路径 2 以“/”开头,结果为 /dir2/dir3/(缺少路径 1)

path1='/Volumes/disk1/'
path2='/dir2/dir3/'
print os.path.join(path1,path2)

示例 2,其中路径 2 不以“/”开头,结果为正确的 /Volumes/disk1/dir2/dir3/:

path1='/Volumes/disk1/'
path2='dir2/dir3/'
print os.path.join(path1,path2)

问题:我认为 os.path.join() 的目的是让我们避免验证它是 mac、windows 还是 linux 文件路径的额外繁琐工作:一个命令即可完成所有工作。但现在,如果我必须观察 path2 是否以“/”(或“\”)开头,它会毁掉我的每一个希望,并带来大量额外的代码......什么是解决方案?我不想做这种丑事:

if path2 and path2.replace('\\','/')[1:] and path2.replace('\\','/').startswith('/'):
path2=path2[1:]

最佳答案

为了避免检查分隔符的麻烦,您必须在不使用分隔符的情况下开始工作,或者在传递到 os.path.join() 之前完全删除它们。在下面的代码中,我展示了 3 种方法(Live Ideone Example 来玩)。

个人目录

import os
print os.path.join('Volumes', 'disk1', 'dir2', 'dir3')

分割路径然后连接

path1 = '/Volumes/disk1/'
path2 = '/dir2/dir3/'

import os
# this will convert to the same as above:
# i.e., os.path.join('Volumes', 'disk1', 'dir2', 'dir3')
print os.path.join(*(path1.split(os.sep) + path2.split(os.sep)))

自定义连接函数

使用上面的代码,您可以编写适用于单路径或多路径字符串的自定义 join():

def join(*paths):
import os
return os.path.join(*[part for path in paths for part in path.split(os.sep)])

path1 = '/Volumes/disk1/'
path2 = '/dir2/dir3/'

print join(path1, path2)
<小时/>

输出:

'Volumes/disk1/dir2/dir3'

关于python - os.path.join() 是否符合预期行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376419/

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