当我在 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
关于python - 为什么将 Windows 路径放入变量中不会用双斜杠替换特定的单斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56292457/