【问题标题】:os.path.exists not working properly on Python CLIos.path.exists 在 Python CLI 上无法正常工作
【发布时间】:2011-07-13 15:17:41
【问题描述】:

我的 Windows 7 机器上有 Python 2.5.x。

os.path.exists('C:')              # returns True
os.path.exists('C:\Users')        # returns True
os.path.exists('C:\Users\alpha')  # returns False, when ALPHA is a user on my machine

我已授予我正在使用的 CLI 的读/写权限。 这可能是什么原因?

【问题讨论】:

  • @haltTm - 那么...你解决了这个问题吗?
  • @mac:部分。 '\a'->'\x07' ; '\b'->'\x08' ; '\c'-> '\\c'; '\U' -> '\\U'; '\A'->'\\A'。这些是 python 如何在单引号中处理反斜杠前面的文字的一些示例。那是什么意思,我还是不知道。注意问题陈述中的一个编辑,因为 ALPHA 是一个虚构的用户名。如果用户名是“ALPHA”,它会正常工作,因为“\A”转换为“\\A”。但是 '\a' 转换为 '\x07' 这意味着 'C:\Users\alpha' 转换为 'C:\\Users\x07lpha' 这不是我机器上的有效路径。
  • 哦,看在上帝的份上,请停止使用单反斜杠。
  • @David:很好奇,反斜杠在 Python 中的作用。当然,不会使用它们:)
  • 你有很好的答案,但你没有接受。

标签: python python-module


【解决方案1】:

在引号内,'\' 转义下一个字符;见reference on string literals。将反斜杠加倍,例如:

os.path.exists('C:\\Users\\ALPHA')

要自己转义反斜杠,请按照 Michael 的建议使用正斜杠作为路径分隔符,或使用“原始字符串”:

os.path.exists(r'C:\Users\ALPHA')

前导 r 将导致 Python 不将反斜杠视为转义字符。这是我最喜欢的处理 Windows 路径名的解决方案,因为它们看起来仍然像人们期望的那样。

【讨论】:

    【解决方案2】:

    使用双反斜杠或正斜杠:

    os.path.exists('C:/Users/ALPHA')    
    

    【讨论】:

    • 显然这不应该是问题。从可能被删除的问题中重复 cmets:>>> x = 'C:\Users\ALPHA', -> >>> x -> 'C:\\Users\\ALPHA'
    猜你喜欢
    • 2019-12-29
    • 2014-04-17
    • 2022-08-23
    • 2022-08-21
    • 2023-03-26
    • 2012-04-10
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多