파이썬 파일 처리 심화: JSON, CSV, XML 완벽 이해 및 활용
파이썬으로 프로그래밍을 하다 보면 다양한 형태의 데이터를 저장하고 다른 프로그램과 주고받아야 할 때가 많습니다. 이번 시간에는 데이터를 특정 규칙에 맞춰 정리하고 저장하는 대표적인 세 가지 파일 형식, 바로 JSON, CSV, XML 파일을 파이썬으로 다루는 방법을 심도 있게 배워보겠습니다.
이 파일 형식들은 웹사이트에서 정보를 가져오거나(웹 크롤링), 프로그램 간에 데이터를 주고받거나, 복잡한 설정 정보를 저장하는 등 다양한 곳에서 사용됩니다. 마치 세상의 다양한 정보를 우리가 이해할 수 있는 언어로 번역하여 기록하고 다시 읽는 것과 같다고 생각하시면 됩니다. 이 강의를 통해 여러분은 파이썬으로 데이터를 자유롭게 다루는 핵심 기술을 습득하게 될 것입니다.
파일 처리, 왜 중요할까요?
컴퓨터는 우리가 프로그램을 끄면 대부분의 정보(데이터)를 잊어버립니다. 그래서 중요한 정보는 파일에 저장해야 합니다. 파일 처리는 데이터를 영구적으로 저장하고, 필요할 때 다시 불러와 사용하거나 다른 사람(또는 다른 프로그램)과 데이터를 주고받기 위해 필수적인 기술입니다.
특히 JSON, CSV, XML은 규칙이 명확하여 컴퓨터가 쉽게 이해하고 처리할 수 있는 '정형화된' 데이터 형식입니다. 이 세 가지 형식은 각각의 장단점과 사용 목적이 있습니다. 마치 똑같은 정보를 저장하더라도 '일기장', '표', '편지' 등 용도에 따라 형식을 다르게 쓰는 것과 같습니다.
1. JSON 파일 다루기: 웹 데이터의 표준
JSON (JavaScript Object Notation)은 웹에서 데이터를 주고받을 때 가장 많이 사용되는 형식입니다. 사람도 읽기 쉽고, 컴퓨터도 처리하기 쉬운 것이 장점입니다. 마치 '디지털 명함'처럼 정보를 '이름: 값'의 형태로 깔끔하게 정리합니다.
JSON 파일에 데이터 쓰기
파이썬의 json 모듈을 사용하면 파이썬의 '딕셔너리'나 '리스트' 같은 데이터를 JSON 형식으로 파일에 저장할 수 있습니다. json.dump() 함수가 이 역할을 합니다.
위 코드를 실행하면 student.json 파일이 생성되며 다음과 같은 내용이 저장됩니다. (indent=4는 들여쓰기 크기, ensure_ascii=False는 한글 깨짐 방지입니다.)
JSON 파일에서 데이터 읽기
저장된 JSON 파일을 읽어올 때는 json.load() 함수를 사용합니다. 이 함수는 JSON 데이터를 다시 파이썬의 딕셔너리나 리스트 형태로 바꿔줍니다.
위 코드를 실행하면 다음과 같은 결과가 화면에 나타납니다.
2. CSV 파일 다루기: 표 형태 데이터의 강자
CSV (Comma Separated Values) 파일은 '쉼표로 구분된 값'이라는 뜻 그대로, 쉼표를 기준으로 데이터를 구분하여 저장하는 방식입니다. 엑셀이나 구글 스프레드시트에서 표 형태의 데이터를 저장하고 주고받을 때 매우 유용합니다. 마치 단순한 표를 종이에 그리는 것과 같습니다.
CSV 파일에 데이터 쓰기
파이썬의 csv 모듈을 사용하여 데이터를 CSV 파일에 쓸 수 있습니다. 각 줄이 하나의 데이터 묶음이 되고, 쉼표로 각 항목이 구분됩니다. csv.writer를 만들고 writerow() 또는 writerows()로 데이터를 씁니다.
위 코드를 실행하면 products.csv 파일이 생성되며 다음과 같은 내용이 저장됩니다.
CSV 파일에서 데이터 읽기
CSV 파일에서 데이터를 읽어올 때는 csv.reader를 사용합니다. 각 줄을 리스트 형태로 가져올 수 있습니다.
위 코드를 실행하면 다음과 같은 결과가 화면에 나타납니다.
3. XML 파일 다루기: 계층적 데이터의 표현
XML (Extensible Markup Language)은 데이터를 '태그'라는 꼬리표를 이용해 계층적으로 표현하는 방식입니다. HTML과 비슷하지만, 데이터의 '내용'을 정의하는 데 초점을 맞춥니다. 마치 복잡한 책의 목차처럼, 정보를 큰 묶음 안에 작은 묶음으로 정리할 때 유용합니다.
XML 파일에 데이터 쓰기
파이썬은 xml.etree.ElementTree 모듈을 사용하여 XML 데이터를 만들고 파일로 저장할 수 있습니다. 각 정보는 '요소(Element)'가 되며, 이 요소들이 나무처럼 가지를 뻗어나가는 구조를 이룹니다.
위 코드를 실행하면 books.xml 파일이 생성되며 다음과 같은 내용이 저장됩니다. (들여쓰기 등은 실제 파일과 다를 수 있습니다.)
XML 파일에서 데이터 읽기
저장된 XML 파일에서 데이터를 읽어올 때는 ET.parse()로 파일을 분석하고, .find()나 .findall() 같은 메서드로 원하는 요소를 찾을 수 있습니다.
위 코드를 실행하면 다음과 같은 결과가 화면에 나타납니다.
중요:
파일을 열 때는 with open(...) as f: 구문을 사용하는 것이 안전합니다. 이 구문은 파일 작업을 마치면 자동으로 파일을 닫아주기 때문에, 파일을 닫는 것을 잊어버려 생길 수 있는 문제를 방지합니다.
주의:
파일을 저장하거나 불러올 때 인코딩(encoding) 문제가 발생할 수 있습니다. 특히 한글이 포함된 데이터를 다룰 때는 encoding='utf-8'을 명시적으로 지정하는 것이 좋습니다. 이 설정은 전 세계의 다양한 문자를 잘 처리할 수 있도록 돕습니다.
핵심 : JSON은 딕셔너리/리스트 형태의 웹 데이터, CSV는 쉼표로 구분된 표 형태 데이터, XML은 태그 기반의 계층적 데이터를 다루는 데 사용됩니다. 각 파일 형식은 파이썬의 전용 모듈을 통해 쉽게 읽고 쓸 수 있습니다.
마무리 요약
이번 시간에는 파이썬으로 JSON, CSV, XML 파일을 읽고 쓰는 심화된 파일 처리 방법을 학습했습니다. 각 파일 형식은 데이터의 특징과 사용 목적에 따라 적절히 선택하여 사용하면 됩니다.
이 지식은 웹 크롤링, 데이터 분석, 프로그램 설정 등 다양한 실제 파이썬 프로젝트에서 강력한 도구가 될 것입니다. 다음 강의에서는 파이썬으로 외부 웹사이트의 데이터를 자동으로 가져오는 '웹 크롤링'의 기초를 배워보겠습니다.
질문이 있다면 댓글에 남겨주세요.