import json
def json_serialize(name, ftype, path):
prof_info = []
prof_info.append({
'profile_name': name,
'filter_type': ftype
})
with open(path, "w") as f:
json.dumps({'profile_info': prof_info}, f)
json_serialize(profile_name, filter_type, "/home/file.json")
上面的代码不会将数据转储到“file.json”文件中。
当我在print
之前写json.dumps()
时,数据会在屏幕上打印出来。
但它不会被转储到文件中。
文件被创建但在打开它时(使用记事本),什么都没有。 为什么呢?
如何纠正?
答案 0 :(得分:6)
这不是json.dumps()
的工作原理。 json.dumps()
返回一个字符串,然后您必须使用f.write()
将其写入文件。像这样:
with open(path, 'w') as f:
json_str = json.dumps({'profile_info': prof_info})
f.write(json_str)
或者,只使用json.dump()
,它的存在完全是为了将JSON数据转储到文件描述符中。
with open(path, 'w') as f:
json.dump({'profile_info': prof_info}, f)
答案 1 :(得分:0)
您需要使用json.dump
。 json.dumps
返回一个字符串,它不会写入文件描述符。
答案 2 :(得分:0)
简单地说,
import json
my_list = range(1,10) # a list from 1 to 10
with open('theJsonFile.json', 'w') as file_descriptor:
json.dump(my_list, file_descriptor)
答案 3 :(得分:0)
还要检查您的输出文件路径是相对路径。
output_json_path = '../Desktop/test_folder/test.json' #This works
# output_json_path = '~/Desktop/test_folder/test.json' #This does not work
with open(output_json_path, 'w+', encoding='utf8') as f:
json.dump({l1 : tagging_dictionary}, f, ensure_ascii = False)