我在使用网络地址时遇到问题。用Windows在Python3.6中尝试过。调用
os.path.relpath(r"\\ZEYCUS\first\second\file.txt", start=r"\\ZEYCUS\first")
我得到'second\\file.txt'
,正如我所料。但是
os.path.relpath(r"\\ZEYCUS\first\second\file.txt", start=r"\\ZEYCUS")
我收到一条错误消息:ValueError: path is on mount '\\\\ZEYCUS\\first', start on mount 'C:'
。
发生了什么事? C:
位来自何处?我应该如何使用relpath
获取'first\\second\\file.txt'
?
答案 0 :(得分:2)
那是因为r'\\ZEYCUS'
实际上不是操作系统路径。它是网络主机说明符。 Windows使用继承自DOS的驱动器号,它们之间没有相对路径;相对路径仅在驱动器中起作用。 r"\\ZEYCUS\first"
是一个网络卷,其运行方式类似于驱动器。实际上,整个部分变成了一个隐含的驱动器号。 C:
很可能是您的系统驱动器,可能是Python进程的当前驱动器。如果你只是在Cmd中尝试dir \\zeycus
,你会发现这是一个无效的卷语法(在一个相当无用的消息中),即使Explorer中的相同说明符产生了一个卷列表。