【问题标题】:Unexpected behaviour of Python's os.path.relpathPython 的 os.path.relpath 的意外行为
【发布时间】:2017-11-18 09:39:40
【问题描述】:

我在使用网络地址时遇到问题。在 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'

【问题讨论】:

标签: python os.path


【解决方案1】:

那是因为r'\\ZEYCUS' 实际上并不是操作系统路径。它是一个网络主机说明符。 Windows 使用从 DOS 继承而来的驱动器号,它们之间没有相对路径;相对路径仅在驱动器内起作用。 r"\\ZEYCUS\first" 是一个网络卷,它像驱动器一样运行。实际上,整个部分变成了一个隐式驱动器号。 C: 很可能是您的系统驱动器,可能是 Python 进程的当前驱动器。如果您在 Cmd 中仅尝试 dir \\zeycus,您会发现这是无效的卷语法(在一条相当无用的消息中),即使资源管理器中的相同说明符会生成卷列表。

【讨论】:

  • @Vernier 谢谢,我试过了,确实如你所说,我担心我缺乏网络知识。
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 2018-11-29
相关资源
最近更新 更多