Python写txt文件,中文编码问题

builderPath = sys.path[0]

filePath = builderPath + "/网络库.json"
with open(filePath,mode="r+") as f:
    moduleInfo = json.load(f)
    print(moduleInfo)
    moduleInfo["name"] = u"网络库"
    print(moduleInfo["name"])
    moduleInfoStr = json.dumps(moduleInfo)
    print(moduleInfoStr)
    #覆盖写入
    f.seek(0)
    f.truncate()
    f.write(moduleInfoStr)

一个内容为中文的纯文本文件,我用以上代码读入到内存中,修改修改里面的内容,然后重新写回文件,发现文件里面的中文全部无法正常显示了

{"name": "\u7f51\u7edc\u5e93", "frameworks": [], "url": "http://recept.zjzwfw.gov.cn/oss/upload/7a2fb6d4-bef2-4f20-8e38-09fbe0ad157f.zip", "packageName": "zwfw.alibaba.zwnetwork", "bizType": 100, "version": "1.0.1", "relateModuleType": [], "description": "iOS\u7aef\u7f51\u7edc\u5e93"}

原因在于这行方法 json.dumps(moduleInfo),对象转字符串的时候,默认会使用ASCII码进行编码,需要手动设置成非ASCII,

moduleInfoStr = json.dumps(moduleInfo,ensure_ascii=False)

文件读取的地方也要作修改

with open(filePath,mode="r+") as f:

需要修改为io包里提供的open方法

with open(filePath,mode="r+") as f:

原因是io.open()读取出来的是Unicode类型,编码类型是正常的

修改后正确的方法是这样的

builderPath = sys.path[0]

filePath = builderPath + "/网络库.json"
with io.open(filePath,mode="r+") as f:
    moduleInfo = json.load(f)
    print(moduleInfo)
    moduleInfo["name"] = u"网络库"
    print(moduleInfo["name"])
    moduleInfoStr = json.dumps(moduleInfo,ensure_ascii=False)
    print(moduleInfoStr)
    #覆盖写入
    f.seek(0)
    f.truncate()
    f.write(moduleInfoStr)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值