windows下python3 open函数编码问题。

with open('1.txt')as f:
    for i in f.readlines():
        needed=i.split(':',1)
        with open('need.txt','a')as f1:
            f1.write('{}:{}'.format(needed[0],needed[1]))

这样会报错,'gbk' codec can't decode byte
只能加上

with open('1.txt',encoding='utf-8')as f:
    for i in f.readlines():
        needed=i.split(':',1)
        with open('need.txt','a')as f1:
            f1.write('{}:{}'.format(needed[0],needed[1]))

指定编码方式才可以,然后输出的need.txt里面有乱码,要转化成GBK编码才能正常显示。1.txt编码方式是utf-8。
系统的默认编码是utf-8
图片描述

有什么办法让open函数默认就是utf8编码呢,而不需要手动指定。

阅读 7k
1 个回答

默认utf8,是myopen这个意思么?

myopen = lambda i: open(i,encoding='utf-8')
with myopen ('1.txt') as f:
    with open('need.txt','a')as f1:
        for i in f.readlines():
            needed=i.split(':',1)
            f1.write('{}:{}'.format(needed[0],needed[1]))

还有给你调了一下顺序,不要在循环里使用open,会频繁打开和关闭文件,效率低下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题