다른 많은 프로그래밍 언어와 마찬가지로 Python은 JSON(JavaScript Object Notation) 데이터를 손쉽게 다룰 수 있습니다. 여러 소스에서 데이터를 가져와 일반 파일처럼 처리할 수 있으며, 이는 JSON 파일을 보기 좋게 출력(pretty print)하고 싶을 때 매우 유용합니다.
이 글에서는 JSON 파일을 예쁘게 출력하는 두 가지 방법을 소개합니다. 두 방법 모두 터미널과 명령줄을 사용하지만, 그중 하나는 Python 지식이 전혀 없어도 활용할 수 있습니다.
예쁘게 출력(Pretty Print)이란 무엇이며, 왜 JSON 파일에 사용해야 할까?
간단히 말해, 예쁘게 출력(pretty printing)이란 원시 형태의 데이터를 사람이 읽기 쉬운 형태로 변환하는 작업입니다. 말 그대로 데이터를 '예쁘게' 만드는 것이죠.
보통 이 작업은 프로그램으로 가져온 데이터를 사람이 직접 해석해야 할 때 수행합니다. JSON 파일 같은 외부 형식의 데이터는 대부분 '경량화(minified)' 상태입니다. 경량화란 컴퓨터가 더 빠르게 파싱할 수 있도록 코드에서 모든 공백을 제거하는 과정을 말합니다.
예를 들어, 경량화된 원본 데이터베이스 데이터를 스크립트에 넣어 적절한 들여쓰기와 서식을 추가할 수 있습니다. 이후 다른 사용자에게 내보내거나 원하는 방식으로 자유롭게 활용하면 됩니다.
Python으로 JSON 파일 예쁘게 출력하기
아래에서는 Python으로 JSON 파일을 예쁘게 출력하는 방법을 단계별로 살펴봅니다. 예제에서는 NeoVim과 내장 :term 명령을 사용했지만, 터미널의 Python 인터프리터에서 바로 실행해도 전혀 문제없습니다.
1. JSON 파일 정의하기
먼저 다룰 JSON 데이터가 필요합니다. 크게 두 가지 접근 방식이 있는데, 하나는 Python 스크립트 안에 데이터를 직접 정의하는 것이고, 다른 하나는 JSON 파일을 불러오는 것입니다. 실무에서는 대부분 파일에서 데이터를 가져오므로, 여기서는 파일 기준으로 설명하겠습니다.
이번 예제에서는 아무런 서식도 적용되지 않은 JSON 덤프 파일을 사용합니다.
이 addresses.json 파일은 Python으로 가져와 서식을 지정할 수 있습니다. Python에서 JSON 파일을 다루려면 먼저 json 모듈을 임포트해야 합니다. 그런 다음 파일 자체를 변수로 정의합니다.
여기까지 완료했다면 이제 "addresses.json" 파일을 본격적으로 다룰 준비가 된 것입니다.
2. Python으로 JSON 파일 열기
다음으로 "addresses.json" 파일을 열어야 합니다. 평소처럼 with open…as 구문을 사용하면 됩니다:
with open(json_file, 'r') as file: …
이 코드 블록 안에서 json.load()를 호출하여 "addresses.json"의 내용을 변수에 할당합니다:
parsed = json.load(file)
지금 이 파일을 실행하면 프로그램은 정상적으로 동작하지만, 터미널에는 아무런 결과도 출력되지 않습니다. 결과를 확인하려면 세 번째 단계로 넘어가야 합니다.
3. JSON 파일 예쁘게 출력하기 (설정 조정)
JSON 파일을 예쁘게 출력하는 마지막 단계는 실제 출력을 수행하는 것입니다. with open…as 코드 블록 내부에 다음 코드를 들여쓰기하여 추가하세요:
print(json.dumps(parsed, indent=4, sort_keys=True))
코드를 분석해 보면, print 함수가 json.dumps()를 호출하며, 이 함수는 세 가지 인수를 받습니다:
- 예쁘게 출력할 파일(변수)의 이름
- 들여쓰기 크기
- 키(key)를 기준으로 정렬할지 여부
설정이 끝나면 변경 사항을 저장하고 새 터미널 창을 엽니다. 프로젝트 폴더로 이동한 후 프로그램을 실행하세요.
터미널에 설정한 옵션이 적용되어 JSON 파일이 보기 좋게 출력됩니다.
물론 실무에서는 데이터를 터미널에 출력하기보다 예쁘게 정리된 JSON을 별도 파일로 저장하는 경우가 많습니다. 그래도 명령줄에서 단 한 줄로 JSON 파일을 즉시 예쁘게 출력할 수 있는 스니펫이 있습니다.
명령줄에서 Python으로 JSON 파일 예쁘게 출력하기
터미널 출력으로 JSON 파일을 즉석에서 예쁘게 출력하는 아주 빠른 방법도 있습니다. 새 터미널 창을 열고 프로젝트 폴더로 이동한 뒤 다음 명령을 실행하세요:
cat addresses.json | python3 -m json.tool
위 예제에서 "addresses.json" 부분은 자신의 파일명으로 변경하면 됩니다. 명령을 실행하면 터미널에 서식이 적용된 출력 결과가 표시됩니다.
코드 작성 없이도 몇 초 만에 JSON 파일을 예쁘게 출력할 수 있는 훌륭한 방법입니다.
마무리
Python으로 JSON 파일을 예쁘게 출력하면 다양하게 활용할 수 있습니다. 주로 경량화된 데이터를 읽기 쉽게 변환해 다른 사용자에게 내보낼 때 유용합니다. 어떤 목적이든, Python의 json 모듈과 "with open…as" 코드 블록만 있으면 간단히 처리할 수 있습니다.
Python의 다른 활용법이 궁금하다면 Python 반복문과 range() 함수에 관한 다른 글도 확인해 보세요. 이 방법이 실무에 도움이 될까요? 어떻게 활용하실 계획인지 댓글로 알려주세요!