本人是在win7 64位系统,利用Anaconda安装的Python3.6环境下进行的相关测试。
我们经常会遇到有些官方release的代码我们无法运行或出错,一方面是因为一些相关路径需要根据自己的机器进行设置;另一方面就是操作系统的问题,比如一些依赖库和编解码的问题,这个在有些系统中是默认安装的,有些或是不兼容等,而有些人在release代码的时候从交代自己的开发环境,如Python版本,操作系统,编译环境和一些依赖库等,这样的话程序出错了我们也无从下手。尤其是在深度学习领域,像一些深度学习库在配置的时候严格依赖开发环境,希望大家在以后release代码的时候先详细交代一下所用的开发环境。
下面要讲的关于Python下利用json将数据写入文件,有时无法写入或出错,大都是关于操作系统默认的编解码方案不同造成的,比如Ubuntu系统与Windows系统,默认的编解码方案就不同,导致有些程序直接拿来在Windows系统上运行就会出错或无法运行。如下程序所示:
import json
with open((out_dir, json_name % data_set), 'wb') as outfile:
((ann_dict))
这段代码直接在Win7系统下就会无法运行,而下面三段代码均可正确运行。
方法1:
import json
import codecs
with open((out_dir, json_name % data_set), 'wb') as outfile:
(ann_dict, ('utf-8')(outfile), ensure_ascii=False)
方法2:
import json
with open('', 'w') as f:
('abcdefGH', f, ensure_ascii=False)
方法3:
import io
import json
with ('C:/usr/', 'w', encoding='utf-8') as f:
(('Hello world!', ensure_ascii=False))
在上述代码中,可以看到方法2是最简单的。同时也应注意到一点不同,如'wb'与'w'的区别,binary mode doesn't take an encoding argument, 与的区别,关于它们的区别可参考该篇博文。