大二的一个小学弟说 他想显示电脑路径 D:\AIML_Project\CAM\Feature_Visual\train 中所有的训练图片的名字,然后给我看的是下面这行代码:
for filename in os.listdir('D:\AIML_Project\CAM\Feature_Visual\train'):
我看到listdir()后面跟的是路径,我就“嗯”了一声,然后学弟一会跑过来跟我说报错了,说是提示路径不正确。
我下意识的改成了
for filename in os.listdir('D:\\AIML_Project\\CAM\Feature_Visual\\train'):
后来又隐约记得电脑的文件路径和python中显示的文件路径用的斜杠是反的。
总结: 我们在python中指定文件路径时,加 r 和不加 r是有很大区别的,r是 raw 的英文缩写,表示原生的、未加工的、不改变的意思。举个例子,正常情况下,我们在python环境下执行下面代码:
print('\t中国\t地质\n大学')
输出如下:
也就是把 \t 转义成了 tab 符号
在字符串前面加上 r :
print(r'\t中国\t地质\n大学')
输出如下:
加了r之后就是不进行转义。
f = open('E:/pythonTest/python_exam/1.txt')
print(f.readline())
f = open('E:\\pythonTest\\python_exam\\1.txt')
print(f.readline())
f = open(r'E:\pythonTest\python_exam\1.txt')
print(f.readline())
两个\\ 转义成了一个 \,也就是第二种和第三种方法等价.
正斜杠和反斜杠的路径python都可以读,只要注意反斜杠所表示的转义就行了。
正斜杠 / 不用担心这个问题,也就是第一个方法。