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")
O código acima não despeja os dados no arquivo "file.json". Quando escrevo print
antes json.dumps()
, os dados serão impressos na tela. Mas não é despejado no arquivo.
O arquivo é criado, mas ao abri-lo (usando o bloco de notas), não há nada. Por quê?
Como corrigir isso?
Respostas:
5 para resposta № 1Não é assim que json.dumps()
trabalho. json.dumps()
retorna uma string, que você deve gravar no arquivo usando f.write()
. Igual a:
with open(path, "w") as f:
json_str = json.dumps({"profile_info": prof_info})
f.write(json_str)
Ou, apenas use json.dump()
, que existe exatamente com a finalidade de despejar dados JSON em um descritor de arquivo.
with open(path, "w") as f:
json.dump({"profile_info": prof_info}, f)
0 para resposta № 2
Você precisa usar json.dump
. json.dumps
retorna uma string, não grava em um descritor de arquivo.
0 para resposta № 3
Simplesmente,
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)