python - 为什么将 Windows 路径放入变量中不会用双斜杠替换特定的单斜杠?

标签 python python-os

当我在 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/

相关文章:

python - 如何删除 CSV 文件中某个值大于另一个值的所有行?

python - Django:为 ModelForm 中的 ForeignKey 添加 "Add new"按钮

python pptx改变整个表格的字体大小

python - 如何将构建的 Cython 扩展从一台 PC 转移到另一台?

python - 如何获取目录中最后修改的文件?

python os.walk 显示混合的 windows 和 unix 路径

python - 使用 python 查找事件窗口

python - 添加基于RadioItems的下拉列表

Python - 使用操作系统重命名文件两次

python - 如何用pickle或其他东西加载文件夹中的每个cookie文件?