[Python/파이썬] 파일명이 중복되면 자동으로 파일명을 변경
코코._.
·2021. 1. 14. 11:33
728x90
파이썬 코드를 짜면서 계속 실행하다보면 결과 파일의 이름이 같아서 덮어쓰기가 되는데, 그 전의 결과물도 남기고 싶을 때가 있어서 파일명을 자동 변경해주는 코드를 찾아보았다.
만일 동일한 파일명이 존재하면 뒤에 (1), (2), (3) .... 이렇게 숫자가 붙게 만들어보았다.
우선 동일한 파일명이 있는지 확인하고 파일명을 변경하는 코드는 아래와 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import os import csv input_path = r'D:/practice/original/' filename='sample_merge' #파일명 고정값 file_ext='.csv' #파일 형식 output_path='D:/practice/%s%s' %(filename,file_ext) uniq=1 while os.path.exists(output_path): #동일한 파일명이 존재할 때 output_path='D:/practice/%s(%d)%s' % (filename,uniq,file_ext) #파일명(1) 파일명(2)... uniq+=1 | cs |
변경되는 파일명은 아래 %s에 original 파일명, 괄호안에 (%d) 번호가, 마지막 %s에 파일 형식이 붙어서 생성된다.
output_path='D:/practice/%s(%d)%s' % (filename,uniq,file_ext)
변경되는 파일명의 형태를 바꾸고 싶으면 저 부분을 변경하면 된다.
또 다시 지난번 파일을 합치는 코드에 추가로 위의 코드를 적용해 보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import csv import glob import os input_path = 'D:/practice/original/' filename='sample_merge' file_ext='.csv' output_path='D:/practice/%s%s' %(filename,file_ext) uniq=1 while os.path.exists(output_path): output_path='D:/practice/%s(%d)%s' % (filename,uniq,file_ext) uniq+=1 file_list=glob.glob(input_path+'*.csv') with open(output_path,'w') as f: for i, file in enumerate (file_list): #첫 번째 파일은 그대로 불러오기 if i==0: #첫 번째 파일은 그대로 불러오기 with open(file,'r') as f2: while True: line=f2.readline() if not line: break f.write(line) print(file.split('\\')[-1]) else: with open(file,'r') as f2: n=0 while True: line=f2.readline() if n!=0 : #2번째 파일부터는 (헤더)제외 f.write(line) if not line: break n+=1 print(file.split('\\')[-1]) file_num=len(next(os.walk('D:/practice/original/'))[2]) print(file_num,' file merge complete...') | cs |
첫 번째 실행 결과
두 번째 실행 결과
세 번째 실행 결과
이렇게 정상적으로 실행이 잘 되는 것을 확인할 수 있다.
300x250
'프로그래밍 > Phython' 카테고리의 다른 글
[Python/파이썬] 파이썬 독학하기 좋은 사이트 추천 (0) | 2022.01.19 |
---|---|
[Python/파이썬] 엑셀 파일 오름차순/내림차순 정렬하기 (0) | 2021.05.10 |
[Python/파이썬] CSV 파일 엑셀로 변환하기 (0) | 2021.01.13 |
[Python/파이썬] CSV 여러 파일 하나로 합치기 (0) | 2021.01.12 |