Chapter 01. 데이터 분석가에게 꼭 필요한 기초 문법
파일 입출력 기초
open 함수
open() 함수는 파일을 열기 위해 사용합니다. open() 함수는 파일 경로와 함께 파일 모드를 지정할 수 있음.
• ‘r’: 읽기 모드 (기본값, 파일이 없으면 오류가 발생)
• ‘w’: 쓰기 모드 (파일이 없으면 생성, 있으면 덮어씀)
• ‘a’: 추가 모드 (파일이 없으면 생성, 있으면 덧붙임)
• ‘b’: 바이너리 모드 (주로 파이썬 객체 자체를 핸들링할 때 사용)
# 파일을 읽기 모드로 열기
file = open("example.txt", "r")
file.close()
* open 함수를 사용한 뒤에는 반드시 close()를 이용하여 닫아줘야 함.
open과 같이 사용하는 함수
open 함수를 이용해 파일을 열고 여러 함수를 이용하여 추가적인 처리가 필요
• read(): 파일 전체 내용을 한 번에 읽어옴. 파일이 매우 클 경우, 전체 파일을 한 번에 읽어오는 read()는 메모리 사용량이 커질 수 있음.
• readline(): 파일에서 한 줄씩 읽어오는 함수. 반환 값은 한 줄씩 읽은 문자열. 파일 끝에 도달하면 빈 문자열 ""을 반환.
• readlines(): 파일의 모든 줄을 읽어 리스트로 반환. 각 줄은 리스트의 한 요소로 저장.
• write(): 파일에 문자열을 쓰는 함수.
• writelines(): 여러 줄의 데이터를 파일에 한 번에 쓸 수 있게 해주는 함수.
with ~ as 구문
with 구문을 사용하면 파일을 열고 작업을 마친 후 자동으로 파일을 닫는다.
• close()를 사용하여 파일을 닫지 않으면, 리소스 낭비, 변경 사항 반영되지 않음, 파일 잠금 상태 등의 문제가 발생할 수 있음.
• with 구문을 사용하면 코드 블록 내에서만 파일이 열리며 코드 블록 밖에서는 자동으로 닫힘.
with open(파일) as 변수:
do something with 변수
with open('example.txt', 'r') as file:
content = file.read()
print(content)
경로와 os 모듈
절대 경로
절대 경로는 파일 시스템에서 파일의 위치를 루트 디렉토리부터 시작해서 지정하는 경로
• 폴더의 주소 창을 바탕으로 가져올 수 있음. 단, 파일명은 포함되지 않으니 파일명을 추가해줘야함.
• 파일의 속성 내 위치 (우클릭 > 속성 > 위치)를 바탕으로도 얻을 수 있음.
• 이렇게 얻은 경로에는 역슬래시(\)가 포함되어 있음에 주의해야 합니다. \를 /로 바꾸거나, \를 \\로 바꾸거나, 문자열 앞에 r을 붙여야 함.
상대 경로
상대 경로는 현재 작업 디렉토리(즉, 현재 파이썬 프로그램이 실행되는 디렉토리)를 기준으로 파일의 위치를 지정하는 경로
• 사용이 간단하며, 프로그램 배포 시 사용하기 좋습니다.
• ..는 이전 경로를 나타내며, /는 소속 관계를 나타냅니다.
folder1
└─ mycode.ipynb (현재 경로)
└─ data1.csv ----- data1.csv
└─ folder2
└─ data2.csv ----- folder2/data2.csv
folder3
└─ data3.csv ----- ../folder3/data3.csv
└─ folder4
└─ data4.csv ----- ../folder3/folder4/data4.csv
os 모듈의 주요 함수
os 모듈은 파이썬에서 파일 및 디렉토리 경로를 다루는 데 유용한 여러 함수를 제공
• os.getcwd(): 현재 작업 디렉토리 가져오기
• os.chdir(path): 작업 디렉토리 변경
• os.listdir(path): 경로 내 파일 및 폴더 목록
pickle 모듈
pickle 모듈이란?
pickle 모듈은 파이썬 객체를 저장하고 불러오는데 사용하는 모듈
• 파일로 변환하기 어려운 객체(예: ML 모델)를 저장하고 다시 불러오는데 주로 사용합니다.
• pickle.dump(obj, file): 객체 obj를 파일 객체 file에 저장합니다.
• pickle.load(file): 파일 객체 file에 있는 객체를 불러옵니다.
* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
생각정리
파일 입출력은 데이터를 다루는 데 있어서 필수적인 기능이라고 생각한다. 단순히 화면에 출력하는 것이 아니라, 결과를 파일로 저장하거나 외부 데이터를 불러와 처리할 수 있어야 실제 프로젝트에서 활용 가능성이 커진다. 특히 with ~ as 구문은 실수를 줄이고 자동으로 파일을 닫아주기 때문에, 안전한 프로그래밍 습관을 기르는데 꼭 필요하다고 느꼈다. 또한 절대 경로와 상대 경로, 그리고 os 모듈의 활용은 데이터 파일이 흩어져 있는 상황에서 중요한 개념이므로 프로젝트 환경을 구성할 때 반드시 이해하고 넘어가야 한다고 생각했다.
적용점
- 데이터 저장 및 불러오기
- 분석한 결과를 writelines()로 저장하거나, 로그 파일을 만들어 실험 결과를 관리한다.
- CSV, TXT 등 외부 데이터를 readlines()로 불러와 전처리한다.
- 프로젝트 관리
- 코드와 데이터 파일이 여러 폴더에 흩어져 있을 때, 상대 경로를 활용해 배포 및 협업 시 경로 문제를 줄인다.
- os.listdir()을 활용해 데이터 폴더 내 파일들을 자동으로 읽어 반복 처리한다.
- 고급 활용
- pickle 모듈을 사용해 머신러닝 모델이나 전처리 객체를 저장하고 재활용하여, 매번 다시 학습하는 시간을 줄인다.
- 실험 환경에서 os.getcwd()와 os.chdir()를 활용해 작업 디렉토리를 유연하게 변경한다.
'데이터' 카테고리의 다른 글
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-7 (0) | 2025.09.21 |
|---|---|
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-6 (0) | 2025.09.20 |
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-4 (0) | 2025.09.18 |
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-3 (0) | 2025.09.17 |
| 제로베이스 데이터사이언스 스쿨 - Part 01. 데이터 분석을 위한 Python_Chapter 01-2 (0) | 2025.09.16 |