当我在 Python shell 中执行以下操作时,为什么第二个斜杠没有被双斜杠替换?:
>>> p = 'M:\django\newenv\django_projects\mediaproject\mediaproject\media'
>>> p
'M:\\django\newenv\\django_projects\\mediaproject\\mediaproject\\media'
我认为这是导致我在尝试 os.listdir(p) 时遇到的错误:
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'M:\\django\newenv\\django_projects\\mediaproject\\mediaproject\\media'
或者是否有其他错误原因?该目录肯定存在,并且是从 Windows 文件资源管理器复制粘贴的。
编辑:
我认为这是因为第二个斜杠在 n 字符之前,所以它被视为换行符。但是我该如何解决这个问题(在现实世界中我不会手动输入路径)?
请您参考如下方法:
尝试
p = r'M:\django\newenv\django_projects\mediaproject\mediaproject\media'
os.listdir(p)
在字符串前添加 r 可防止在字符串内部进行转义序列解释。因此,该字符串仅被解释为原始字符串。
原始字符串和普通字符串之间的区别在于它们如何处理转义序列。原始字符串总是将 \n 视为两个单独的字符,一个 \ 后跟一个 n。另一方面,普通字符串会将 \n 视为单个字符。
EX.
raw_string = r"\n"
string = "\n"
print(len(raw_string))
print(len(string))
输出
2
1
