Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 여러 개의 파일을 하나의 새 파일로 병합하는 방법

여러 개의 텍스트 파일을 하나의 새 파일로 합치는 작업은 파이썬에서 아주 간단하게 처리할 수 있습니다. 기본 원리는 파일 목록을 순회하면서 각 파일의 내용을 읽고, 그 내용을 출력 파일에 차례대로 쓰는 것입니다.

기본 방법: 파일 전체를 한 번에 병합하기

아래 예제는 세 개의 텍스트 파일을 output_file이라는 새 파일로 병합하는 가장 일반적인 방법입니다.

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())

코드 설명

  • filenames 리스트에는 병합하고 싶은 파일들의 이름이 담겨 있습니다.
  • 바깥쪽 with open('output_file', 'w')는 결과를 저장할 새 파일을 쓰기 모드로 엽니다. with 문을 사용하면 작업이 끝난 후 파일이 자동으로 닫히므로 안전합니다.
  • 안쪽 with open(fname)은 각 입력 파일을 하나씩 열고, infile.read()로 전체 내용을 읽어 출력 파일에 바로 씁니다.

대용량 파일 처리: 한 줄씩 병합하기

파일 크기가 매우 클 경우 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)

위 코드는 각 입력 파일을 줄 단위로 순회하며 그대로 출력 파일에 쓰기 때문에, 수백 MB 이상의 대용량 로그 파일이나 데이터 파일을 병합할 때도 안정적으로 동작합니다.

추가 팁

  • 바이너리 파일 병합: 이미지나 동영상처럼 텍스트가 아닌 파일을 다룰 때는 open('output_file', 'wb')처럼 'rb', 'wb' 모드를 사용해야 합니다.
  • 줄바꿈 처리: 파일 사이에 구분이 필요하다면 outfile.write('\n')을 추가해 각 파일의 내용 사이에 줄바꿈을 넣을 수 있습니다.
  • 파일 목록 자동화: glob.glob('*.txt')를 활용하면 특정 패턴과 일치하는 파일들을 자동으로 찾아 병합할 수 있습니다.

이처럼 파이썬의 with 문과 반복문만 활용하면, 별도의 외부 라이브러리 없이도 여러 파일을 손쉽게 하나의 파일로 병합할 수 있습니다.