Das json-Modul von Python kann JSON-Dateien lesen und JSON-formatierte Objekte schreiben, jedoch keine JSON-Dateien erstellen. Ich habe die JSON-Dateierstellung nach Bedarf implementiert, daher werde ich sie als Memo belassen.
Aus dem offiziellen Dokument
https://docs.python.org/ja/3/library/json.html
--Insert [Wenn die JSON-Datei, die Sie schreiben möchten, leer ist
Es wird angenommen, dass sich die folgenden 3 Dateien in derselben Hierarchie befinden
json_make.py
import json
from pathlib import Path
def json_make(path: Path, obj: dict) -> None:
ls = None
with open(path, 'r+') as f:
ls = f.readlines()
if ls == []:
ls.append('[\n')
if ls[-1] == ']':
ls[-1] = ','
ls.insert(len(ls), f'{json.dumps(obj, indent=4 ,ensure_ascii=False)}')
ls.insert(len(ls), '\n]')
with open(path, 'w') as f:
f.writelines(ls)
main.py
from json_make import json_make
from pathlib import Path
def main():
path = Path(__file__).parent/'tmp.json'
dict_obj = {'key1':'value1', 'key2':'value2', 'key3':['value3', 'value4']}
json_make(path, dict_obj)
if __name__ == '__main__':
main()
Für json.dumps (Einzug = 0)
tmp.json
[
{"key1": "value1", "key2": "value2", "key3": ["value3", "value4"]}
,{"key1": "value1", "key2": "value2", "key3": ["value3", "value4"]}
,{"key1": "value1", "key2": "value2", "key3": ["value3", "value4"]}
,{"key1": "value1", "key2": "value2", "key3": ["value3", "value4"]}
]
Für json.dumps (Einzug = 4)
tmp.json
[
{
"key1": "value1",
"key2": "value2",
"key3": [
"value3",
"value4"
]
}
,{
"key1": "value1",
"key2": "value2",
"key3": [
"value3",
"value4"
]
}
,{
"key1": "value1",
"key2": "value2",
"key3": [
"value3",
"value4"
]
}
,{
"key1": "value1",
"key2": "value2",
"key3": [
"value3",
"value4"
]
}
]
Bitte lassen Sie mich wissen, ob es einen besseren Weg zum Schreiben gibt
Recommended Posts