【问题标题】:Windows path with double backslash in PythonPython中带有双反斜杠的Windows路径
【发布时间】:2020-11-25 09:55:14
【问题描述】:

这似乎是一个非常基本的问题,但我仍然感到困惑。我有一个包含反斜杠的 Windows 路径,为了逃避它的特殊含义,我使用了\\。 当我使用print 函数获取路径时,给了我实际的回报:

>>> print("C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources")
C:\Users\2.0Dev\8\F000B101\POD280-51\Resources

然而,当它作为参数传递给 python 中的两个不同函数时,行为是不同的:

>>> rsrc_dir="C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources"
>>> os.path.isdir(rsrc_dir)
>>> False
>>> os.mkdir('C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 3] The system cannot find the path specified:'C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources'

谁能解释一下这两个函数如何解释同一个参数。另外,如何返回与print函数相同的格式化字符串。

非常感谢。

【问题讨论】:

  • C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\ 存在吗? C:\\Users\\2.0Dev\\8\\F000B101\\ 存在吗? C:\\Users\\2.0Dev\\8\\ 存在吗?确保所有早期目录都存在或使用os.markdirs(..) 来创建它们。
  • @PatrickArtner 虽然中间目录不存在,但mkdir 可以创建它们。我对其进行了测试,发现它在 powershell 上更有效。
  • 这是否意味着 python os.mkdir 和 powershell mkdir 命令的行为不同?
  • 你为什么认为powershell和pyhton是一样的? os.mkdirs 创建中间目录。 os.mkdir 没有。文档是你的朋友....
  • @PatrickArtner 谢谢!你是对的。我按照文档进行操作,然后得到了答案。我确实使用 makedirs 创建中间目录。

标签: python string mkdir backslash os.path


【解决方案1】:

os.mkdir 不创建中间目录,因此:

os.mkdir('C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources')

否则会失败

os.path.exists('C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51')

如果您想创建递归目录,请使用os.makedirs。请注意,您可能会使用os.path.join,它将使用适用于它运行的系统的分隔符,在您的情况下,用法是:

rsrc_dir=os.path.join("C:\\","Users","2.0Dev","8","F000B101","POD280-51","Resources")

【讨论】:

    猜你喜欢
    • 2014-04-29
    • 1970-01-01
    • 2013-01-22
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多