파일 병합하기

 

파일이 한 두개 정도는 수동으로 병합하면 되지만 파일이 10개 20개 그 이상일 경우에는 노가다를 요하는 작업이 되어버립니다.

이 노가다를 대신해줄 수 있도록 파이썬 csv 모듈을 이용하여 파일을 순차적으로 이어 붙여주는 소스코드를 만들어 보도록하겠습니다.

파일은 csv, txt 어떤 종류던 상관없습니다.

 

시작!

 

1. 파일준비

[test1.csv]

[test2.csv]

위의 두 파일을 이어 붙이도록 하겠습니다.

 

2. 소스코드 작성 ( "#header = next(freader)" 주석 )

import csv
import glob
import os

input_path = './' #검색할 디렉토리, 폴더명 지정(현재위치)
output_file = 'result.csv' #결과물 파일명

is_first_file = True
for input_file in glob.glob(os.path.join(input_path, 'test*.csv')): #검색할 파일명
    print(os.path.basename(input_file))
    with open(input_file, 'r', newline='', encoding='utf-8') as csv_in_file:
        with open(output_file, 'a', newline='', encoding='utf-8') as csv_out_file:
            freader = csv.reader(csv_in_file)
            fwriter = csv.writer(csv_out_file)
            if is_first_file:
                for row in freader:
                    fwriter.writerow(row)
                    print(row)
                is_first_file = False
            else:
                #header = next(freader) #헤더를 건너뛰는 옵션
                for row in freader:
                    fwriter.writerow(row)
                    print(row)


 

3. 실행 결과

콘솔창 모습니다.

 

이후 result.csv 파일이 생성됩니다. 더블클릭하여 내용이 합쳐졌는지 확인해 보겠습니다.

합쳐졌습니다.

하지만 완벽한 모습은 아닌 것으로 보입니다.

헤더를 건너 뛰는 부분은 소스코드 중 'header = next(freader)' 이 부분에 의해 결정됩니다.

위의 소스코드는 이 부분을 주석처리하여 첫번째 파일을 제외한 모든 파일의 첫번째 행도 포함시켜서 병합시키도록 설정해놓았습니다.

그럼 주석을 해제시켜서 두번째 파일부터 첫번째 행을 건너뛰도록하여 실행해 보도록 하겠습니다.

 

4. 실행 결과( "header = next(freader)" 주석 해제 )

콘솔창 모습입니다.

두번째 파일의 첫번째 행을 건너뛰고 병합된 것을 확인 할 수 있습니다.

** txt 파일은 확장자만 변경해주면 적용됩니다.**

 

유용하게 사용하세요 ~~

 

 

+ Recent posts