刚刚在运行python文件的时候竟然报SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: tr这个错误,其实引起这个错误的原因就是转义的问题。
举个例子,在文件中我传入的文件路径是这样的
sys.path.append('c:\Users\mshacxiang\VScode_project\web_ddt')
原因分析:在windows系统当中读取文件路径可以使用\,但是在python字符串中\有转义的含义,如\t可代表TAB,\n代表换行,所以我们需要采取一些方式使得\不被解读为转义字符。目前有3个解决方案
1、在路径前面加r,即保持字符原始值的意思。
sys.path.append(r'c:\Users\mshacxiang\VScode_project\web_ddt')
2、替换为双反斜杠
sys.path.append('c:\\Users\\mshacxiang\\VScode_project\\web_ddt')
3、替换为正斜杠
sys.path.append('c:/Users/mshacxiang/VScode_project/web_ddt')
二、读取文件
# 操作文件 mode=r表示对文件只进行可读操作,已文本的形式。 如果是rb表示已二进制的形式读到内存中 f = open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="r", encoding="GB2312") data = f.read() print(data) f.close()
三、查看文件的编码格式
import chardet result = chardet.detect(open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="rb").read()) print(result)
四、循环读取文件
# 循环文件 f = open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="r", encoding="GB2312") # 循环读取文件,一次只读一行 for line in f: print(line)
五、写入文件
# 写入文件 注意:文件中原有的内容会被全部覆盖 f = open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="w", encoding="GB2312") f.write("python写入的字符") f.close()
六、将内容追加到文件尾部
# 将内容追加到文件尾部 f = open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="ab") f.write("最追加的内容".encode("GB2312")) f.close()
七、读写混合模式
# 读写混合模式,以读的模式打开,支持你写 f = open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="r+", encoding="GB2312") print("old"+f.read()) f.write("最追加的内容") print("new:"+f.read()) f.close()
八、写读混合模式
# 写读混合模式,以创建的模式打开,支持你读 f = open(file=r"C:\Users\Administrator\Desktop\运营草稿本.txt", mode="w+", encoding="GB2312") f.write("写读混合模式") date = f.read() print(date) f.close()
九、操作文件
truncate、tell和seek都是按照字节算进行操作
read按照字符算进行操作
truncate从文件开始的地方截取到指定参数长度位置