Python 文件路径前 +u 或 r 的区别 (机器本身存在文件或文件夹,但是程序找不到)
(1)文件路径 +r 的场景
假设机器上有这么个文件
D:\aaa\ttt\a.txt
文件内容为
hello world
hello world
错误的python 读取方式为:
# -*- encoding=utf-8 -*- with open('D:\aaa\ttt\a.txt', 'r') as f: file_info = f.read() print file_info
此时抛出异常,原因是 \a 和 \t 被转义了
解决办法1:文件路径中用两个\\替换一个\
# -*- encoding=utf-8 -*- with open('D:\\aaa\\ttt\\a.txt', 'r') as f: file_info = f.read() print file_info
解决办法2:文件路径加上r防止转义
# -*- encoding=utf-8 -*- with open(r'D:\aaa\ttt\a.txt', 'r') as f: file_info = f.read() print file_info
解决办法3 :文件路径中用/代替\
# -*- encoding=utf-8 -*- with open('D:/aaa/ttt/a.txt', 'r') as f: file_info = f.read() print file_info
结果都为下图:
(2)文件路径 +u 的场景
假设机器上有这么个文件
D:\aaa\ttt\资料\a.txt
文件内容为
hello world
hello world
错误的python 读取方式为:
# -*- encoding=utf-8 -*- with open('D:\\aaa\\ttt\\资料\\a.txt', 'r') as f: file_info = f.read() print file_info
此时抛出异常,可以看出编码出现了问题
解决方法1:文件路径中加u,表示用unicode编码
# -*- encoding=utf-8 -*- with open(u'D:\\aaa\\ttt\\资料\\a.txt', 'r') as f: file_info = f.read() print file_info
结果