Python에서 여러 개의 파일을 하나의 새 파일로 병합하는 것은 생각보다 간단합니다. 핵심 원리는 반복문으로 파일들을 차례대로 읽어서 새 파일에 쓰는 것입니다.
기본적인 파일 병합 방법
파일 목록을 리스트로 만들고, 각 파일을 순회하면서 내용을 읽어 출력 파일에 작성하면 됩니다. with 문을 사용하면 파일이 자동으로 닫히므로 리소스 누수를 걱정할 필요가 없습니다.
예제 코드
filenames = ['file1.txt', 'file2.txt', 'file3.txt']
with open('output_file', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
outfile.write(infile.read())위 코드는 file1.txt, file2.txt, file3.txt 세 파일의 전체 내용을 읽어 output_file이라는 새 파일에 순서대로 저장합니다.
대용량 파일 처리하기
파일 용량이 매우 클 경우, read()로 전체 내용을 한 번에 메모리에 불러오는 것은 비효율적일 수 있습니다. 이럴 때는 파일을 한 줄씩 읽어서 쓰는 방식으로 메모리 사용량을 크게 줄일 수 있습니다.
예제 코드
filenames = ['file1.txt', 'file2.txt', 'file3.txt']
with open('output_file', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
for line in infile:
outfile.write(line)추가 팁
- 텍스트 인코딩 지정: 한글 등 멀티바이트 문자를 다룰 때는
open(fname, encoding='utf-8')처럼 인코딩을 명시하는 것이 안전합니다. - 바이너리 파일 병합: 이미지나 PDF 같은 바이너리 파일을 합칠 때는 모드를
'rb','wb'로 변경해야 하며, 이 경우 줄 단위 읽기는 적합하지 않습니다. - 줄바꿈 처리: 파일 끝에 줄바꿈이 없으면 두 파일의 내용이 붙어버릴 수 있으니 필요 시
outfile.write(line + '\n')처럼 줄바꿈을 추가하세요.
이처럼 Python의 with 문과 반복문만 활용하면 별도 라이브러리 설치 없이도 손쉽게 여러 파일을 하나로 병합할 수 있습니다.