关于Python下利用json将数据写入文件
程序员文章站
2024-02-03 11:17:40
...
本人是在win7 64位系统,利用Anaconda安装的Python3.6环境下进行的相关测试。
我们经常会遇到有些官方release的代码我们无法运行或出错,一方面是因为一些相关路径需要根据自己的机器进行设置;另一方面就是操作系统的问题,比如一些依赖库和编解码的问题,这个在有些系统中是默认安装的,有些或是不兼容等,而有些人在release代码的时候从交代自己的开发环境,如Python版本,操作系统,编译环境和一些依赖库等,这样的话程序出错了我们也无从下手。尤其是在深度学习领域,像一些深度学习库在配置的时候严格依赖开发环境,希望大家在以后release代码的时候先详细交代一下所用的开发环境。
下面要讲的关于Python下利用json将数据写入文件,有时无法写入或出错,大都是关于操作系统默认的编解码方案不同造成的,比如Ubuntu系统与Windows系统,默认的编解码方案就不同,导致有些程序直接拿来在Windows系统上运行就会出错或无法运行。如下程序所示:
import json
with open(os.path.join(out_dir, json_name % data_set), 'wb') as outfile:
outfile.write(json.dumps(ann_dict))
这段代码直接在Win7系统下就会无法运行,而下面三段代码均可正确运行。
方法1:
import json
import codecs
with open(os.path.join(out_dir, json_name % data_set), 'wb') as outfile:
json.dump(ann_dict, codecs.getwriter('utf-8')(outfile), ensure_ascii=False)
方法2:
import json
with open('data.txt', 'w') as f:
json.dump('abcdefGH', f, ensure_ascii=False)
方法3:
import io
import json
with io.open('C:/usr/data.txt', 'w', encoding='utf-8') as f:
f.write(json.dumps('Hello world!', ensure_ascii=False))
在上述代码中,可以看到方法2是最简单的。同时也应注意到一点不同,如'wb'与'w'的区别,binary mode doesn't take an encoding argument, json.dump与json.dumps的区别,关于它们的区别可参考该篇博文。
推荐阅读
-
关于Python下利用json将数据写入文件
-
神箭手云爬虫-爬取携程【国际】航班/机票信息-利用python解析返回的json文件将信息存储进Mysql数据库
-
Python下异常、模块、文件、数据储存-json等知识讲解
-
利用Python如何将数据写到CSV文件中
-
Python将列表数据写入文件(txt, csv,excel)
-
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
-
Python下异常、模块、文件、数据储存-json等知识讲解
-
Python将json文件写入ES数据库的方法
-
利用python将json数据转换为csv格式的方法
-
python 关于如何把json文件里面的多条数据删除,只保留自己需要的条目