Python os.path.join与启动路径上的os.path.sep正常连接等。?
如果没有手鼓的伴奏,怎么能正常地连接路径的各个部分呢?特别指出,绝对路径会导致前面的路径被丢弃: 如果任何组件是绝对路径,则Windows上以前的所有组件(包括以前的驱动器号,如果有)都将被丢弃,并继续加入 您正在连接以/开头的多个路径。从除第一个路径元素以外的任何元素中删除初始路径分隔符:Python os.path.join与启动路径上的os.path.sep正常连接等。?,python,Python,如果没有手鼓的伴奏,怎么能正常地连接路径的各个部分呢?特别指出,绝对路径会导致前面的路径被丢弃: 如果任何组件是绝对路径,则Windows上以前的所有组件(包括以前的驱动器号,如果有)都将被丢弃,并继续加入 您正在连接以/开头的多个路径。从除第一个路径元素以外的任何元素中删除初始路径分隔符: if __name__ == "__main__": path_one = "/hello/world" path_two = "/my/little/friend" path_tr
if __name__ == "__main__":
path_one = "/hello/world"
path_two = "/my/little/friend"
path_tree = 3
print os.path.join(path_one, path_two, str(path_tree))
# /my/little/friend\3 , but i want get this /hello/world/my/little/friend/3
print os.path.join(path_two, str(path_tree))
# /my/little/friend\3 , but i want get this /my/little/friend/3
# ok, go
print os.path.join(os.path.abspath(path_one), os.path.abspath(path_two), str(path_tree))
# C:\my\little\friend\3 , but i want get C:\hello\world\my\little\friend\3
print os.path.join(os.path.abspath(path_two), str(path_tree))
# C:\my\little\friend\3 , all right!
print os.path.join(os.path.abspath(path_two), str(path_tree), '/', '232\\')
# /232\ , but i want C:\my\little\friend\3\232\
您正在从文件系统的根连接两个绝对路径,即从/开始。当你这样做时,第二个优先;怎么可能不呢?解决方案:不要这样做
>>> import os.path
>>> os.path.join('/foo/bar', '/spam/eggs')
'/spam/eggs'
>>> os.path.join('/foo/bar', 'spam/eggs')
'/foo/bar/spam/eggs'