특정 디렉토리 아래의 JSON 파일을 모두 읽어서 딕셔너리에 저장하는 방법에 대해서 알아보겠습니다.

1. JSON 파일 읽기

아래와 같이 JSON 파일을 읽을 수 있습니다. with로 파일을 열기 때문에, 명시적으로 파일을 닫을 필요가 없습니다. with 구문이 종료되면 자동으로 닫힙니다.

  • with open(file_path, 'r', encoding='utf-8') as json_file : 파일 열기
  • json_data = json.load(json_file) : json_file 텍스트를 JSON 형식으로 읽고 딕셔너리 구조로 리턴
with open(file_path, 'r', encoding='utf-8') as json_file:
    json_data = json.load(json_file)

2. 특정 폴더 하위의 모든 JSON 파일 읽기

특정 폴더 하위의 모든 JSON 파일을 찾아서 읽고, JSON 데이터를 리스트에 저장합니다. 예제에서는 파싱한 모든 데이터를 마지막에 출력합니다.

  • for filename in os.listdir(directory_path): 디렉토리 하위의 모든 파일 탐색
  • json_data_list.append(json_data) : 파싱한 JSON 객체를 리스트에 저장
  • print(json_data_list) : 파싱한 모든 JSON 데이터 출력
import json
import os

directory_path = '/home/mjs/IdeaProjects/python-ex'
json_data_list = []

# 디렉토리 내의 모든 파일을 검색
for filename in os.listdir(directory_path):
    if filename.endswith(".json"):
        file_path = os.path.join(directory_path, filename)

        # JSON 파일 열기
        with open(file_path, 'r', encoding='utf-8') as json_file:
            json_data = json.load(json_file)
            json_data_list.append(json_data)

print(json_data_list)

Output:

[{'posts': [{'title': 'How to get storage size', 'url': 'https://chacha.com/ko/get-free-and-total-size-of-volumes-in-android/', 'draft': 'false'}, {'title': 'Android Q, Scoped Storage', 'url': 'https://chacha.com/ko/android-q-scoped-storage/', 'draft': 'false'}]}, {'posts': [{'title': 'How to get storage size', 'url': 'https://chacha.com/ko/get-free-and-total-size-of-volumes-in-android/', 'draft': 'false'}, {'title': 'Android Q, Scoped Storage', 'url': 'https://chacha.com/ko/android-q-scoped-storage/', 'draft': 'false'}]}, {'d': 4, 'e': 5, 'f': 6}, {'a': 1, 'b': 2, 'c': 3}]