Python使用w模式打开文件的编码类型及指定编码方法
Python中用
w模式打开文件的编码问题 默认编码是什么?
- 用
w模式(文本模式)打开文件时,默认编码不是固定的ASCII或UTF-8,完全取决于你的系统环境:- Windows系统通常默认是
gbk(或对应区域的GB系列编码); - Linux/macOS一般默认是
utf-8; - 你写的
file = open("data.txt", "w")就是用系统默认编码来写文件的。
- Windows系统通常默认是
怎么查当前默认编码?
- 别用
sys.getdefaultencoding(),那是Python内部字符串处理的编码,文件I/O的默认编码要看locale.getpreferredencoding(False)的结果,这才是open()实际使用的编码:import locale print(locale.getpreferredencoding(False))
有没有办法显式指定编码?
- 根本不用额外库,内置
open()直接加encoding参数就行:# 强制用UTF-8写入 with open("data.txt", "w", encoding="utf-8") as f: f.write("测试内容") - 要是喜欢用更现代的文件操作方式,Python3.4+内置的
pathlib也支持指定编码:from pathlib import Path Path("data.txt").write_text("测试内容", encoding="utf-8") - 老一点的
codecs模块也能实现,适合需要更精细编码控制的场景:import codecs with codecs.open("data.txt", "w", encoding="utf-8") as f: f.write("测试内容")
内容的提问来源于stack exchange,提问作者Toothpick Anemone
相关产品推荐
相关产品推荐

