본문 바로가기
Dev/🐍 Python

[Python] 파이썬 dictionary을 이용한 json 파일 다루기

by 아아덕후 2022. 5. 6.
반응형

1. dictionary 자료 만들기

info= { 
    'Smasung': {
        "삼성전자": '1',
        '삼성SDS' : '2',
        '삼성SDI' : '3'
        }
    , "LG": {
        "LG전자": '4',
        'LGCNS' : '5',
        'LG화학': '6'
    }
}

print(info)

[out]
{'Smasung': {'삼성전자': '1', '삼성SDS': '2', '삼성SDI': '3'}, 'LG': {'LG전자': '4', 'LGCNS': '5', 'LG화학': '6'}}

내가 원하는 정보를 하나의 딕셔너리 형태로 만들어 줍니다. 

 

 

2. dictionary 자료 저장 및 읽기

import json

# _data.json 파일에 딕셔너리 형태로 info 저장
with open("data.json", 'w') as f:
    json.dump(info, f, indent='\t')

# 저장 된 _data.json 파일을 읽어오기. 
with open('data.json', 'r') as f:
    data = json.load(f)
    
# json.dumps 이용해서 data를 들여쓰기 4칸 , 한글로 표현되도록 출력 
print(json.dumps(data, indent=4,ensure_ascii = False))

[out]
{
    "Smasung": {
        "삼성전자": "1",
        "삼성SDS": "2",
        "삼성SDI": "3"
    },
    "LG": {
        "LG전자": "4",
        "LGCNS": "5",
        "LG화학": "6"
    }
}

json 라이브러리를 불러오고

위에서 만든 딕셔너리를 json형태로 저장

저장한 json파일을 불러와서 읽어줍니다.

 

 

3. dictionary 데이터 추가 및 반영(update)

 hyundai = {
    'hyundai': {
        "현대자동차": '11',
        '현대모비스': '10',
        '현대위아'  : '9'
            }
        }
        
# 읽어 온 파일에 새로운 딕셔너리 업데이트
data.update(hyundai)

print(data)

[out]
{'Smasung': {'삼성전자': '1', '삼성SDS': '2', '삼성SDI': '3'}, 'LG': {'LG전자': '4', 'LGCNS': '5', 'LG화학': '6'}, 'hyundai': {'현대자동차': '11', '현대모비스': '10', '현대위아': '9'}}

 

 

4. 업데이트 된 json파일 저장 및 읽어오기

# 업데이트 된 json 파일 저장
with open("data.json", 'w',encoding='utf-8') as f:
    json.dump(data, f, indent='\t')

# 업데이트 된 json 파일 읽기 
with open('data.json', 'r', encoding='utf8') as f:
    f = f.read()
    my_data = json.loads(f)

# json.dumps 이용해서 my_data를 들여쓰기 4칸 , 한글로 표현되도록 
print(json.dumps(my_data, indent=4,ensure_ascii = False))

[out]
{
    "Smasung": {
        "삼성전자": "1",
        "삼성SDS": "2",
        "삼성SDI": "3"
    },
    "LG": {
        "LG전자": "4",
        "LGCNS": "5",
        "LG화학": "6"
    },
    "hyundai": {
        "현대자동차": "11",
        "현대모비스": "10",
        "현대위아": "9"
    }
}

 

감사합니다 : ) 

반응형

댓글