프로그램/python

[python] json 파일을 csv로 저장하기

더월드 2023. 12. 16.

▶Json 파일에서 특정 항목만 추출하여 csv 파일로 저장하기

- 특정 폴더 아래의 모든 JSON 파일 목록을 가져옵니다.

- Json 파일 항목중 selected_fields로 지정한 항목만 값을 추출합니다.

- 추출한 값을 CSV 파일로 저장합니다.

import os
import json
import csv

def json_to_csv(json_file_path, csv_file):
    # JSON 파일을 읽어와 파싱합니다.
    with open(json_file_path, 'r', encoding='utf-8') as json_file:
        data = json.load(json_file)

    # CSV 파일에 데이터를 추가합니다.
    with open(csv_file, 'a', newline='', encoding='utf-8') as csv_file:
        writer = csv.DictWriter(csv_file, fieldnames=data[0].keys())
        writer.writerows(data)

def convert_folder_to_csv(folder_path, output_csv):
    # CSV 파일의 헤더를 작성합니다.
    with open(output_csv, 'w', newline='', encoding='utf-8') as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow([])  # 빈 행 추가

    # 폴더 내의 모든 JSON 파일을 찾아 변환합니다.
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith('.json'):
                json_file_path = os.path.join(root, file)
                json_to_csv(json_file_path, output_csv)

# 특정 폴더 내의 JSON 파일들을 포함한 모든 서브 폴더들을 CSV 파일로 변환합니다.
input_folder = '/path/to/your/folder'
output_csv_file = 'output.csv'
convert_folder_to_csv(input_folder, output_csv_file)

print(f'변환 완료. CSV 파일이 {output_csv_file}로 저장되었습니다.')

 

▶ Json 파일을 csv로 변경하는 다른 코드 예제입니다.

import os
import json
import csv

def extract_selected_fields(json_data, selected_fields):
    extracted_data = {field: json_data[field] for field in selected_fields if field in json_data}
    return extracted_data

def json_to_csv(json_file_path, csv_file, selected_fields):
    # JSON 파일을 읽어와 파싱합니다.
    with open(json_file_path, 'r', encoding='utf-8') as json_file:
        data = json.load(json_file)

    # 추출된 데이터를 CSV 파일에 추가합니다.
    with open(csv_file, 'a', newline='', encoding='utf-8') as csv_file:
        writer = csv.DictWriter(csv_file, fieldnames=selected_fields)
        for item in data:
            extracted_data = extract_selected_fields(item, selected_fields)
            writer.writerow(extracted_data)

def convert_folder_to_csv(input_folder, output_csv, selected_fields):
    # CSV 파일의 헤더를 작성합니다.
    with open(output_csv, 'w', newline='', encoding='utf-8') as csv_file:
        writer = csv.DictWriter(csv_file, fieldnames=selected_fields)
        writer.writeheader()

    # 폴더 내의 모든 JSON 파일을 찾아 변환합니다.
    for root, dirs, files in os.walk(input_folder):
        for file in files:
            if file.endswith('.json'):
                json_file_path = os.path.join(root, file)
                json_to_csv(json_file_path, output_csv, selected_fields)

# 선택한 JSON 항목의 키를 지정합니다.
selected_fields = ['name', 'age', 'city']

# 특정 폴더 내의 JSON 파일들을 포함한 모든 서브 폴더들을 CSV 파일로 변환합니다.
input_folder = '/path/to/your/folder'
output_csv_file = 'output.csv'
convert_folder_to_csv(input_folder, output_csv_file, selected_fields)

print(f'변환 완료. CSV 파일이 {output_csv_file}로 저장되었습니다.')

 

 

댓글

💲 추천 글