【问题标题】:Python windows path slash [duplicate]Python Windows路径斜杠[重复]
【发布时间】:2013-09-28 08:49:28
【问题描述】:

我在 python 脚本中使用目录路径时遇到了一个非常基本的问题。当我从 Windows 资源管理器复制路径时,它使用反斜杠作为路径分隔符,这会导致问题。

>>> x
'D:\testfolder'
>>> print x
D:      estfolder
>>> print os.path.normpath(x)
D:      estfolder
>>> print os.path.abspath(x)
D:\     estfolder
>>> print x.replace('\\','/')
D:      estfolder

谁能帮我解决这个问题。

【问题讨论】:

  • 在所有操作系统上都可以理解正斜杠 - 但 Windows 上的 normpath 确实使用 \`. I personally find it easiest to use the path` 方法来组合/管理路径,然后最后从 \` to /` 进行替换以保持一致跨系统。不确定这是否能回答您的问题?
  • 您可以在此字符串前添加一个 r,例如 x = r'D:\testfolder',x 将是“D:\testfolder”。在字符串前添加“r”表示该字符串是原始字符串。

标签: python


【解决方案1】:

Python 将字符串中的\t 解释为制表符;因此,正如您所注意到的,"D:\testfolder" 将在:e 之间打印一个标签。如果您想要一个实际的反斜杠,您需要通过输入 \\转义反斜杠:

>>> x = "D:\\testfolder"
>>> print x
D:\testfolder

但是,为了跨平台兼容性,您可能应该使用os.path.join。我认为 Windows 上的 Python 也会自动正确处理正斜杠 (/)。

【讨论】:

  • 只使用正斜杠就可以在windows下工作——os.path.join()显然是最强的解决方案。
  • 或者,您可以使用 raw string literal 前缀 r 以便不解释转义序列,例如r"D:\testfolder".
  • @AdamRosenfield 原始字符串不适合 windows 路径。 pythonconquerstheuniverse.wordpress.com/2008/06/04/…
  • 原始字符串并不总是适合 Windows 路径。从链接中,只要您不以 \ 结尾,原始字符串就可以工作。或者 os.path.normpath() 和 os.path.join() 组合使用,如果一致使用将起作用。
猜你喜欢
  • 2017-05-07
  • 2020-11-25
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 2014-04-29
相关资源
最近更新 更多