파일 병합하기
파일이 한 두개 정도는 수동으로 병합하면 되지만 파일이 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 파일은 확장자만 변경해주면 적용됩니다.**
유용하게 사용하세요 ~~
'프로그래밍 > Python' 카테고리의 다른 글
Python Socket Programming (TCP/UDP Echo 서버) (955) | 2020.08.14 |
---|---|
Python 한글 도메인 IP 자동 추출하기 (퓨니코드, punycode, nslookup) (866) | 2020.08.13 |
Python 국가명, 국가코드, 위도, 경도 조회(Geoip, mmdb) (952) | 2020.08.13 |
Python 실행파일 만들기 (1916) | 2020.08.12 |
Python Thread(쓰레드) + Heapq(힙큐) + Globals()응용 (313) | 2020.08.11 |