最近在学习Python 文件读写时发现有时文件路径无法被识别,查询资料后发现原来是转义字符在捣鬼,导致路径无法正确解析。网上关于解决此类问题的文章有很多,但有些方法不全面,有些甚至不起作用,于是自己尝试了各种情况,并总结了自己的方法,记录在此,一来可以加深自己理解,二来也希望能帮到有同样困惑的小伙伴,Rookie 一枚,仅代表个人看法,如有错误希望大家不吝指正。谢谢~
Envir: Window 10
最初使用的打开文件方式如下(路径无法识别):
with open(‘C:Pythonresult.txt’) as file:
print(file.read())
网上有资料说是因为Linux 系统的文件路径复制下来是正斜杠 “/” ,而Windows 系统的文件路径默认是反斜杠 “”, 只要把反斜杠替换成正斜杠就好了,这是个奏效的方法,但我看的文章并没有从逻辑上去解释为什么。其实是因为反斜杠”” 和 “r” 放在一起在Python中代表回车符,所以系统无法解析并识别正确的路径,类似的转义字符还有d , n, t, b 等。所以如果把文件名字换成不是这些字母开头的或者把字母变成大写,都是可以解决问题的。以上述路径为例,总结解决办法如下:
No. | Solution | Example | Reason | Comment |
---|---|---|---|---|
#1 | 路径字符串前加 “r” | r’C:Pythonresult.txt’ | 使路径中的转义字符失效, “”只代表一个普通的字符 | 推荐 |
#2 | 把反斜杠换成正斜杠 “/” |
‘C:/Python/result.txt’ |
消除反义字符 | |
#3 | 路径中全部使用double 反斜杠 |
‘C:\Python\result.txt’ |
Python中 “\” 也是一种反义字符,代表反斜线,所以路径正确解析为’C:Pythonresult.txt’ | |
#4 | 只在路径中有歧义的地方使用double 反斜杠 |
‘C:Python\result.txt’ |
同上 |
注: 网上有些文章中说可以在C:后再加一个反斜杠,我个人尝试发现并不能解决问题。