L'autre jour, j'ai résumé comment lire un fichier json avec PowerShell, effectuer le formatage nécessaire et générer json, mais depuis que je l'ai essayé avec Python, j'aimerais le garder en mémoire.
Le premier est le fichier json à lire.
data.json
{
"prefectures": [
{
"code": "Tokyo",
"name": "Tokyo"
},
{
"code": "Osaka",
"name": "Osaka"
},
{
"code": "Aichi",
"name": "Aichi"
},
{
"code": "Fukuoka",
"name": "Fukuoka"
}
],
"tables": [
{
"code": "meeting_room",
"name": "salle de conférence",
"field1": "id",
"field2": "floar",
"field3": "capacities"
},
{
"code": "parking",
"name": "Terrain de stationnement",
"field1": "id",
"field2": "area",
"field3": "space_number",
"field4": "user_name",
"field5": "car_number",
"field6": "expire"
}
]
}
Ce que je veux sortir est un fichier json pour chaque élément des préfectures x tables. De plus, le json ajoute l'indicatif régional et le nom de la zone à chacun des codes et noms de la table.
Voici le code que j'ai essayé. Je pense que le contenu des phrases for sur les 17e et 22e lignes peut être organisé plus proprement, donc j'ai besoin de me consacrer.
main.py
import os
import sys
import pathlib
import json
import itertools
def json_make():
"""
Sortie json pour le type de table region x à partir de données Json
"""
jsonfile = open('data.json', 'r')
data = json.load(jsonfile)
prefectures = data['prefectures']
tables = data['tables']
for pref, table in itertools.product(prefectures, tables):
pref_code = pref["code"]
pref_name = pref["name"]
result = {}
for k in table:
if k == 'code':
result['code'] = f'{pref_code}_{table[k]}'
elif k == 'name':
result['name'] = f'{pref_name}_{table[k]}'
else:
result[k] = table[k]
expfile = open("./results/" + result['code'] + '.json', 'w')
# ensure_ascii=Évitez le codage japonais en ajoutant False
json.dump(result, expfile, indent=4, ensure_ascii=False)
#Ne pas traiter s'il n'y a pas de fichier
if os.path.exists('data.json') is False:
sys.exit()
#Créer s'il n'y a pas de dossier de sortie
exp = pathlib.Path('./results')
if exp.exists() is False:
exp.mkdir()
json_make()
naoki$ ls -l results
-rw-r--r-- 1 naoki staff 139 4 19 13:16 Aichi_meeting_room.json
-rw-r--r-- 1 naoki staff 214 4 19 13:16 Aichi_parking.json
-rw-r--r-- 1 naoki staff 141 4 19 13:16 Fukuoka_meeting_room.json
-rw-r--r-- 1 naoki staff 216 4 19 13:16 Fukuoka_parking.json
-rw-r--r-- 1 naoki staff 139 4 19 13:16 Osaka_meeting_room.json
-rw-r--r-- 1 naoki staff 214 4 19 13:16 Osaka_parking.json
-rw-r--r--@ 1 naoki staff 139 4 19 13:16 Tokyo_meeting_room.json
-rw-r--r-- 1 naoki staff 214 4 19 13:16 Tokyo_parking.json
Aichi_meeting_room.json
{
"code": "Aichi_meeting_room",
"name": "Aichi_salle de conférence",
"field1": "id",
"field2": "floar",
"field3": "capacities"
}
Aichi_parking.json
{
"code": "Aichi_parking",
"name": "Aichi_Terrain de stationnement",
"field1": "id",
"field2": "area",
"field3": "space_number",
"field4": "user_name",
"field5": "car_number",
"field6": "expire"
}
Recommended Posts