[python][자료구조] Python - JSON 파일 읽고 쓰는 방법

Python - JSON 파일 읽고 쓰는 방법

json 라이브러리를 사용하여 JSON 파일을 읽거나, 데이터를 JSON 형식으로 저장할 수 있습니다.

다음 내용들에 대해서 어떻게 구현하는지 알아보겠습니다.

JSON 형식으로 파일로 저장

json 라이브러리는 파이썬의 dict, list 객체를 바로 JSON 파일로 저장할 수 있게 도와줍니다.

다음은 dict 객체를 JSON 파일로 저장하는 예제입니다.

import json

file_path = "./sample.json"

data = {}
data['posts'] = []
data['posts'].append({
    "title": "How to get stroage size",
    "url": "https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/",
    "draft": "false"
})
data['posts'].append({
    "title": "Android Q, Scoped Storage",
    "url": "https://codechacha.com/ko/android-q-scoped-storage/",
    "draft": "false"
})
print(data)

with open(file_path, 'w') as outfile:
    json.dump(data, outfile)

sample.json 파일을 출력해보면 다음과 같습니다.

$ cat sample.json
{"posts": [{"title": "How to get stroage size", "url": "https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/", "draft": "false"}, {"title": "Android Q, Scoped Storage", "url": "https://codechacha.com/ko/android-q-scoped-storage/", "draft": "false"}]}

위의 sample.json 파일은 공백이 모두 제거되었기 때문에 보기 어렵습니다.

위의 코드에서 json.dump()에 indent 옵션을 주면 보기 좋게 write가 됩니다.

with open(file_path, 'w') as outfile:
    json.dump(data, outfile, indent=4)

indent 옵션을 적용한 결과는 다음과 같습니다.

{
    "posts": [
        {
            "title": "How to get stroage size",
            "url": "https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/",
            "draft": "false"
        },
        {
            "title": "Android Q, Scoped Storage",
            "url": "https://codechacha.com/ko/android-q-scoped-storage/",
            "draft": "false"
        }
    ]
}

JSON 파일 읽기

JSON 파일을 읽어서 dict 객체로 만들 수 있습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

다음은 sample.json 파일을 읽어서 dict로 가져오는 예제입니다.

import json

file_path = "./sample.json"
with open(file_path, "r") as json_file:
    json_data = json.load(json_file)
    print(json_data)
    print("")
    print(json_data['posts'])
    print("")
    print(json_data['posts'][0]['title'])

결과

{'posts': [{'title': 'How to get stroage size', 'url': 'https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/', 'draft': 'false'}, {'title': 'Android Q, Scoped Storage', 'url': 'https://codechacha.com/ko/android-q-scoped-storage/', 'draft': 'false'}]}

[{'title': 'How to get stroage size', 'url': 'https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/', 'draft': 'false'}, {'title': 'Android Q, Scoped Storage', 'url': 'https://codechacha.com/ko/android-q-scoped-storage/', 'draft': 'false'}]

How to get stroage size

기존 JSON 파일에 내용 추가해서 다시 저장

기존 JSON 파일을 읽고, 거기에 아이템을 하나 더 추가하고 다시 저장할 수도 있습니다.

다음은 기존 sample.json을 읽고, 거기에 리스트를 하나 추가하고 다시 저장하는 예제입니다.

import json

file_path = "./sample.json"
json_data = {}
with open(file_path, "r") as json_file:
    json_data = json.load(json_file)

json_data['posts'].append({
    "title": "How to parse JSON in android",
    "url": "https://codechacha.com/ko/how-to-parse-json-in-android/",
    "draft": "true"
})

with open(file_path, 'w') as outfile:
    json.dump(json_data, outfile, indent=4)

sample.json에 저장된 내용

{
    "posts": [
        {
            "title": "How to get stroage size",
            "url": "https://codechacha.com/ko/get-free-and-total-size-of-volumes-in-android/",
            "draft": "false"
        },
        {
            "title": "Android Q, Scoped Storage",
            "url": "https://codechacha.com/ko/android-q-scoped-storage/",
            "draft": "false"
        },
        {
            "title": "How to parse JSON in android",
            "url": "https://codechacha.com/ko/how-to-parse-json-in-android/",
            "draft": "true"
        }
    ]
}

참고

[출처] https://codechacha.com/ko/python-read-write-json-file/

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
122 [Python 인터넷] 7 - 개요 file 졸리운_곰 2023.03.30 402
121 [Python 인터넷] 6 - href 연결하기 file 졸리운_곰 2023.03.26 363
120 [Python 인터넷] 5 - 다른 페이지 크롤링 file 졸리운_곰 2023.03.26 275
119 [Python 인터넷] 4 - flask에 css 적용하기 file 졸리운_곰 2023.03.26 349
118 [Python 인터넷] 3 - 크롤링한 데이터 html에 보여주기 file 졸리운_곰 2023.03.26 428
117 [Python 인터넷] 2 - flask 프로젝트 생성, 세팅 file 졸리운_곰 2023.03.26 399
116 [Python 인터넷] 1 - 트렌드 홈페이지 개발 개요 file 졸리운_곰 2023.03.26 381
115 [Python 인터넷] Python Python - 파이썬 REST API 통신 예제(POST 요청하기, 서버만들기) file 졸리운_곰 2023.03.21 460
114 [Python 인터넷] Using a Python HTTP Proxy Server to Simulate an API Gateway file 졸리운_곰 2023.03.11 366
113 [Python 인터넷] Django REST API 서버 만들기 file 졸리운_곰 2023.03.09 305
112 [Python 인터넷] django REST framework로 간단한 api 만들기 file 졸리운_곰 2023.03.08 489
111 [Python 인터넷] Quickstart - Django REST framework 졸리운_곰 2023.03.08 314
110 [Python 인터넷] 세상에서 가장 간단한 Airflow 튜토리얼 file 졸리운_곰 2023.03.05 316
109 [Python 인터넷] Flask 또는 Django를 Production 서버로 배포(Deploy)하기 file 졸리운_곰 2023.03.03 331
108 [Python 인터넷] django 웹사이트 배포를 하며 겪은 시행착오 졸리운_곰 2023.03.03 282
107 [Python 인터넷] Windows에서 Django와 Apache 연동하기 졸리운_곰 2023.03.02 342
106 [Python 인터넷] 구글로 공부하는 파이썬 - 부록 (IIS, Apache 로 Flask 돌리기) file 졸리운_곰 2023.01.26 438
105 [python 인터넷] Flask로 REST API 구현하기 - 3. JWT로 사용자 인증하기 졸리운_곰 2023.01.26 378
104 [python 인터넷] Flask로 REST API 구현하기 - 2. 파일 분리, 문서화 졸리운_곰 2023.01.26 393
103 [python 인터넷] Flask로 REST API 구현하기 - 1. Flask-RESTX file 졸리운_곰 2023.01.26 363
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED