본문 바로가기
작업실/도구

Merge2CSV.py: CSV 병합 도구

by Corin Choi 2021. 9. 13.

CSV 병합 도구

언어 번역(language.csv) 등의 파일을 병합하는데 유용합니다.

Merge2CSV.exe
5.27MB
MergeCsv.py
0.00MB


  내용이 겹치는 두 CSV를 서로 병합할 때 사용합니다.

  구 버전의 한글 번역을 최신 버전의 미번역 파일(번역 할 예정)과 병합할 때, 구 한글 번역을 살리면서 최신 버전 파일과 합칠 수 있습니다.

 

  파이썬이 있다면 파이썬 코드로 실행하는 게 더 좋습니다. 응용프로그램은 오래된 코드를 사용하여 종료 메시지가 뜨기 전까지 파일이 저장되지 않습니다. 반면 파이썬 코드는 병합 작업이 완료되면 바로 파일이 저장됩니다.


코드 전문 - MergeCsv.py

import os
import csv
import codecs
import time

print("\n \n \n  HI! This is CSV File Merger. \n")

time.sleep(3)

print("  Let me Know the directory about your Merge CSV Files. Step(1/5) \n")
print(" You can cancel this task with CTRL+C anytime. \n")
time.sleep(1)

mainCSVdir = input(" Please Enter Main CSV FILE Directory : \n    ")
mergCSVdir = input(" Please Enter Merge CSV FILE Directory : \n    ")
outCSVdir = input(" Please Enter Output CSV FILE Directory : \n    ")

mainCSV = codecs.open(mainCSVdir, 'r', "utf-8")
rCSV_0 = csv.reader(mainCSV)
mergCSV = codecs.open(mergCSVdir, 'r', "utf-8")
rCSV_1 = csv.reader(mergCSV)

print("\n  Ready? After 3 seconds, I will collect info with Main CSV File. Step(2/5)")

time.sleep(3)

mainData = []
count = 0

for line in rCSV_0 :
    print(str(count)+"    "+str(line))
    mainData.append(line)
    count += 1

print("\n  DONE! After 3 seconds, I will collect info with Merge CSV File. Step(3/5)")

time.sleep(3)

mergData = []
count = 0

for line in rCSV_1 :
    print(str(count)+"\n    "+str(line))
    mergData.append(line)
    count += 1

print("\n  DONE! After 5 seconds, I will Merge these two CSV Files. Step(4/5)")

time.sleep(5)

outCSV = codecs.open(outCSVdir, 'w', "utf-8")
wCSV = csv.writer(outCSV)

outData = []
count = 0;
delay = 0;

mergeData = []

print("\n Preperating...")

while(count < len(mergData)) :
    merge = mergData[count]
    mergeData.append(merge[0])
    count += 1

time.sleep(1)

print("\n Start Merge...")

time.sleep(1)

print("\n ")

count = 0

while(count < len(mainData)) :
    main = mainData[count]
    if mergeData.count(main[0]) > 0 :
        i = mergeData.index(main[0])
        outData.append(mergData[i])
        print(str(count)+"/"+str(delay)+"  IMPORT [MERGE] : \n    "+str(mergData[i]))
    else :
        outData.append(mainData[count])
        print(str(count)+"/"+str(delay)+"  IMPORT [MAIN] : \n    "+str(mainData[count]))
        delay += 1
    count += 1

time.sleep(3)

print("\n Start Write...")

time.sleep(1)

count = 0

while(count < len(outData)) :
    wCSV.writerow(outData[count])
    print("Writting : "+str(count)+"/"+str(len(outData)-1)+"    "+str(round(count/(len(outData)-1)*100),2)+"%")
    count += 1

mainCSV.close()
mergCSV.close()
outCSV.close()

time.sleep(1)

print("\n  Successful! Please Check your folder ["+outCSVdir+"] Step(5/5)\n\n")

댓글