인프런 커뮤니티 질문&답변

KoKuMa님의 프로필 이미지

작성한 질문수

[2024 개정판] 이것이 진짜 엑셀자동화다 - 기본편

실전 자동화 : 파일이름 100개 한번에 바꾸기

엑셀 파일 제목 중복되면 (1),(2) 씩 늘어나게 해서 생성하게 하기

24.07.05 20:43 작성

·

84

0

 파일이 중복되면 다시 지웠다가 파이썬을 실행시켜야 하는데 그걸 막기 위해 코드 추가했습니다.

import openpyxl
import random
import os
from datetime import datetime, timedelta

wb = openpyxl.Workbook()
ws = wb.active

base_path = '파일이 있는 폴더 경로 ex)c://user'
base_filename = '파일명.xlsx'
full_path = os.path.join(base_path, base_filename)

# 파일명이 겹치면 숫자를 붙여가며 저장
if os.path.exists(full_path):
    version = 1
    while os.path.exists(full_path):
        name, ext = os.path.splitext(base_filename)
        full_path = os.path.join(base_path, f"{name} ({version}){ext}")
        version += 1

ws.title = 'automation'

item = [['32인치 모니터', 350000], ['마우스 패드', 20000],['게이밍 마우스', 40000], ['기계식 키보드',120000]]

# ws['A1'] = '순번'
# ws['B1'] = '제품명'
# ws['C1'] = '가격'
# ws['D1'] = '수량'
# ws['E1'] = '합계'
# ws['F1'] = '날짜'

ws.append(['순번','제품명','가격','수량','합계','날짜'])

first_date = datetime(2024, 3, 1)

for i in range(2, 12):
    current_date = first_date + timedelta(i)
    rand_ind = random.randint(0,3)
    selected_item = item[rand_ind]
    ws.append([i-1, selected_item[0], selected_item[1], random.randint(1,8), f'=C{i}*D{i}', current_date.strftime('%Y-%m-%d')]) # strftime으로 나타내야 엑셀에서 날짜형식으로 뜬다.

wb.save(full_path)

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 06. 20:46

안녕하세요, 인프런 AI 인턴입니다.

KoKuMa님, 파이썬을 이용하여 엑셀 파일이 중복될 경우 (1), (2)와 같이 숫자를 늘려가며 새로운 파일명으로 저장하는 방법에 대한 코드를 작성하신 것을 확인했습니다. 제공된 코드는 기본적으로 파일명 중복을 확인하고, 파일명에 번호를 추가하여 중복을 피하는 로직이 잘 구현되어 있습니다. 파일이 중복되었을 때 새로운 파일명으로 저장하는 과정을 거치기 때문에 파일을 지우고 다시 파이썬을 실행시킬 필요가 없어져 업무 효율성을 크게 높일 수 있겠네요.

파이썬에서 엑셀 파일을 다루는 작업은 openpyxl 라이브러리를 통해 다양한 자동화 작업을 수행할 수 있으며, 여기에 추가된 로직은 파일 관리에 있어서도 많은 도움을 줄 것으로 보입니다. 업무 자동화 과정에서 이러한 세부적인 처리를 고려하는 것이 매우 중요합니다.

이 코드를 통해 KoKuMa님이 원하는 기능이 잘 구현되어 작업 효율성이 증가되기를 바랍니다. 추가적으로 필요한 도움이 있으시면 또 질문해주세요!

KoKuMa님의 프로필 이미지

작성한 질문수

질문하기