Python文件读写注意编码

文件的读写操作
1.python3中的默认的编码解码方式为utf-8
windows默认使用的编码方式为gbk
当读取一个windows文件(gbk),可以指定读取时使用的编码encoding=('gbk')或者不需要指定
with open('a.txt','r','encoding=(gbk)') as f:这样就能读取出a.txt文件的字符串数据
当python写入文件时,默认使用的utf-8编码,在win上打开会乱码,因为win默认编码是gbk

2.wb w r rb a(追加写)
with open('a.txt','w') as f:
f.write(xx)
当使用w写入时,实际上把内容先进行了编码.在wb写入
with open('a.txt','wb') as f:
f.write(xx.encode())
因此在写入二进制时,使用wb,若是使用w 会对内容进行编码,二进制无法编码,所以error
# 注:以下写法会报错,\U在python字符串中有特殊含义,在读取字符串时会报错
# 解决方法是对\转义 C:\\U...
with open('C:\User\xxx\a.txt','r') as f:
pass
# # TODO 打开一个文件 open函数的默认参数encoding=None
# 以utf-8编码打开读取一个文件
# with open('a.txt','r',encoding='utf-8') as f:
# print(f.read())
# # 以gbk编码读取文件
# with open('a.txt','r',encoding='gbk') as f:
# print(f.read())
#
# # 不指定encoding,默认按照系统的编码(win是gbk)
# with open('a.txt','r',encoding='gbk') as f:
# print(f.read())

a = '哈哈哈哈哈哈哈哈哈嗝'


# 以w写入时,实际上是先对a字符串进行encode(),在wb写入,
# 指定encodeing=utf-8 a.txt的编码为utf-8
# with open('a.txt','w',encoding='utf-8') as f:
# f.write(a)
# TODO 指定写成gbk编码的txt文件
# with open('a.txt','w',encoding='gbk') as f:
# f.write(a)
# 不指定写的编码,按照系统的默认编码(win是gbk)
# with open('a.txt','w',) as f:
# f.write(a)

posted @ 2018-12-14 21:59  纵天地者  阅读(13521)  评论(0编辑  收藏