Python

[Python] 여러개의 엑셀 파일을 한번에 CSV 파일로 변환하는 방법

엑셀 파일을 한번에 CSV 파일로 변환 방법

대부분의 직장인들이 데이터를 분석할 때는 대부분 엑셀을 사용한다. 엑셀은 정말 파워풀하고 유용한 기능들을 쉽게 사용할 수 있다. 나도 엑셀을 정말 사랑한다.

그런데 시간이 지나면서 기하급수적으로 쌓인 데이터들을 분석할 때 엑셀이 버거워하는 모습을 보인다. 예를들어 50만행의 데이터를 가진파일과 70만행의 데이터를 가진 파일을 vlookup하면 아마 시간이 엄청 오래 걸리거나 엑셀이 멈출것이다.

그래서 나는 데이터 분석을 할때 SQL을 이용한다. SQL을 이용하기 위해서는 나만의 DB를 구축해야 하는데 SQL DB를 업로드 하기 위해서는 엑셀파일을 CSV파일로 변환하는 작업이 필요하다.

엑셀 파일을 CSV로 변환하는 파이썬 코드

Python
import time
import pandas as pd
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class ExcelToCSVHandler(FileSystemEventHandler):
    def __init__(self, watch_folder):
        self.watch_folder = watch_folder
        self.processed_files = set()

    def on_created(self, event):
        if not event.is_directory and event.src_path.lower().endswith(('.xlsx', '.xls')):
            self.convert_excel_to_csv(event.src_path)

    def on_modified(self, event):
        if not event.is_directory and event.src_path.lower().endswith(('.xlsx', '.xls')):
            self.convert_excel_to_csv(event.src_path)

    def convert_excel_to_csv(self, excel_filepath):
        filename, ext = os.path.splitext(os.path.basename(excel_filepath))
        csv_filepath = os.path.join(self.watch_folder, f"{filename}.csv")

        if excel_filepath not in self.processed_files and not os.path.exists(csv_filepath):
            try:
                df = pd.read_excel(excel_filepath)
                df.to_csv(csv_filepath, index=False, encoding='utf-8-sig')
                print(f"'{os.path.basename(excel_filepath)}'을(를) '{os.path.basename(csv_filepath)}'로 변환했습니다.")
                self.processed_files.add(excel_filepath)
            except Exception as e:
                print(f"'{os.path.basename(excel_filepath)}' 변환 중 오류 발생: {e}")

def monitor_folder(folder_path):
    event_handler = ExcelToCSVHandler(folder_path)
    observer = Observer()
    observer.schedule(event_handler, folder_path, recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

if __name__ == "__main__":
    watch_folder = input("CSV 파일로 변환할 엑셀 파일이 있는 폴더 경로를 입력하세요: ")
    if os.path.isdir(watch_folder):
        print(f"'{watch_folder}' 폴더를 감시합니다...")
        monitor_folder(watch_folder)
    else:
        print("유효하지 않은 폴더 경로입니다.")</code></pre>

코드 실행 방법

우선 라이브러리 하나를 설치해야 합니다.

Python
pip install pandas watchdog

코드 저장: 위의 파이썬 코드를 .py 확장자를 가진 파일 (예: excel_to_csv.py)로 저장합니다.

폴더 경로 입력: 스크립트를 실행하면 CSV 파일로 변환할 엑셀 파일이 있는 폴더 경로를 입력하라는 메시지가 나타납니다. 해당 폴더의 정확한 경로를 입력하고 Enter 키를 누릅니다.

실행: 스크립트가 실행되면 지정된 폴더를 감시하기 시작합니다. 이제 해당 폴더에 새로운 엑셀 파일(.xlsx 또는 .xls)을 넣거나 기존 엑셀 파일을 수정하고 저장하면 자동으로 CSV 파일로 변환됩니다.

종료: 스크립트 실행을 중단하려면 터미널 또는 명령 프롬프트에서 Ctrl + C를 누릅니다.

thehunss87

Recent Posts

4대그룹 평균연봉 (24년 4대그룹 계열사별 평균 연봉, 직원수)

순위회사명인당급여직원수(명)1SK스퀘어2.79억원882LG1.87억원1823SK텔레콤1.62억원5,4934삼성증권1.57억원2,5655삼성카드1.50억원2,0216삼성화재해상보험1.49억원5,5497삼성생명1.48억원5,1638기아1.36억원35,7479현대모비스1.35억원12,31010삼성에스디에스1.34억원11,38711삼성물산1.34억원9,38012삼성전자1.30억원129,48013삼성E&A1.29억원5,85414SKC1.28억원17815SK아이이테크놀로지1.28억원38916제일기획1.28억원1,47417현대위아1.26억원2,93718현대자동차1.24억원75,13719현대로템1.20억원4,18220SK이노베이션1.19억원2,14821SK가스1.19억원66122LG에너지솔루션1.18억원12,63523SK하이닉스1.18억원32,39024현대차증권1.17억원89825LG전자1.17억원35,72726SK1.17억원4,40427LG씨엔에스1.16억원6,89128SK증권1.14억원84229SK디앤디1.12억원18030LG유플러스1.10억원10,57131현대건설1.09억원7,14732SK디스커버리1.09억원7233삼성바이오로직스1.07억원5,01134현대오토에버1.04억원5,42135삼성전기1.03억원12,16136LG화학1.03억원13,85737현대글로비스1.00억원2,44138삼성SDI0.97억원13,34139삼성중공업0.94억원10,11240현대제철0.93억원11,80341HS애드0.86억원79642SK케미칼0.85억원2,93243LG디스플레이0.83억원25,14444LG헬로비전0.82억원1,07545에스원0.81억원6,95846LG생활건강0.81억원4,38147SK바이오사이언스0.80억원1,02148LG이노텍0.80억원12,65849현대비앤지스틸0.76억원48650SK시그넷0.68억원35351SK오션플랜트0.62억원66452SK네트웍스0.60억원1,55453SK이터닉스0.39억원3084대그룹 평균1.19억원556,559 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…

10개월 ago

현대차그룹 계열사별 직원 평균급여 순위 (24년)

순위회사명인당급여직원수(명)1기아1.36억원35,7472현대모비스1.35억원12,3103현대위아1.26억원2,9374현대자동차1.24억원75,1375현대로템1.20억원4,1826현대차증권1.17억원8987현대건설1.09억원7,1478현대오토에버1.04억원5,4219현대글로비스1.00억원2,44110이노션1.00억원94611현대제철0.93억원11,80312현대비앤지스틸0.76억원486현대차그룹 평균1.23억원159,455 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…

10개월 ago

SK그룹 계열사별 직원 평균급여 순위 (24년)

순위회사명인당급여직원수(명)1SK스퀘어2.79억원882SK텔레콤1.62억원5,4933SKC1.28억원1784SK아이이테크놀로지1.28억원3895SK이노베이션1.19억원2,1486SK가스1.19억원6617SK하이닉스1.18억원32,3908SK1.17억원4,4049SK증권1.14억원84210SK디앤디1.12억원18011SK디스커버리1.09억원7212SK케미칼0.85억원2,93213SK바이오사이언스0.80억원1,02114SK시그넷0.68억원35315SK오션플랜트0.62억원66416SK네트웍스0.60억원1,55417SK이터닉스0.39억원308SK그룹 평균1.17억원53,677 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…

10개월 ago

LG그룹 계열사별 직원 평균급여 순위 (24년)

순위회사명인당급여직원수(명)1LG1.87억원1822LG에너지솔루션1.18억원12,6353LG전자1.17억원35,7274LG씨엔에스1.16억원6,8915LG유플러스1.10억원10,5716LG화학1.03억원13,8577HS애드0.86억원7968LG디스플레이0.83억원25,1449LG헬로비전0.82억원1,07510LG생활건강0.81억원4,38111LG이노텍0.80억원12,658LG그룹 평균1.02억원123,917 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…

10개월 ago

삼성그룹 계열사별 직원 평균급여 순위 (24년)

순위회사명인당급여직원수(명)1삼성증권1.57억원2,5652삼성카드1.50억원2,0213삼성화재해상보험1.49억원5,5494삼성생명1.48억원5,1635삼성에스디에스1.34억원11,3876삼성물산1.34억원9,3807삼성전자1.30억원129,4808삼성E&A1.29억원5,8549삼성바이오로직스1.07억원5,01110삼성전기1.03억원12,16111삼성SDI0.97억원13,34112삼성중공업0.94억원10,11213호텔신라0.56억원1,97214레인보우로보틱스0.48억원98삼성그룹 평균1.25억원214,094 [참고사항] 인당 급여 : 24년 dart 사업보고서에 사업부문별, 성별로 1인당 급여액이 공시되어 있는데…

10개월 ago

환절기 눈 가려움? 알레르기 원인과 건강관리 꿀팁 정리!

계절이 바뀌는 환절기에는 일교차가 크고 공기 중 알레르기 유발 물질이 많아져 각종 건강 문제가 쉽게…

11개월 ago