파이썬으로 파일 복사 - 똑같은 파일을 파일명만 다르게 복제하기

2021. 7. 15. 08:53·얕은 개발 이야기

한 때 개발자 육성 과정인지 모르고 국비 교육을 듣던 시절에 배웠던 것이 업무하다가 간간히 써먹을 때가 있다. 그래, 6개월 동안의 시간이 꼭 낭비만은 아니었군. 배우길 잘했다라는 생각이 들 때. 1) 개발자와 의사소통하다가 문제 해결책을 찾을 때 2) 업무 자동화를 위해 간단한 소스 코드를 짤 수 있을 때.

 

파이썬은 업무 자동화를 위해 가장 많이 언급되는 언어다. 쉽고 간단해서. 근데 그것도 막상 배우려면 파이썬도 쉽지 않지만, 비교적 다른 언어들에 비하면 쉬운 편이다. 특히 데이터 분석을 할 때 많이 사용되긴 하니 기획자들도 기회가 되면 배우면 좋겠지만... 굳이? ㅎ 오히려 업무 자동화를 위해서 쓸 수 있는게 더 많지 않을까 생각이 들기도 한다.

 

하지만 나도 내 직무에 있어서 아직 업무 자동화라고 할 만한 것들을 찾진 못했다. 설계서를 쓰거나 정책을 정의하는 일이 더 많기 때문에 '업무 자동화'라는 말이 그렇게 와닿지 않는다. 어떻게 써야 할지 잘 모르겠다.

 

 

그러다가 딱 한 번 파이썬을 쓴 적이 있다. 

프로젝트의 내용은 상세히 밝힐 수 없지만, 약 2천 개 정도의 상품 이미지 파일을 각 상품 코드에 맞춰서 파일명을 변경해서 업로드해야 하는 일이었다. 문제는 상품 이미지 파일이 없는 경우, "상품 이미지를 준비 중입니다"라는 문구가 적힌 이미지를 업로드 해야 하는데 이 역시 상품 코드가 파일명이 되어야 했다. 

 

즉, 상품 이미지가 없는 상품 코드를 추려서, 똑같은 이미지를 파일명을 변경하여 복제해야 했다.

 

 

처음부터 파이썬을 쓰려던건 아니었다. 그저 뻘짓을 하고 싶지 않았다. 개인적으로 단순 노동을 좋아하지 않는데, 저 업무는 너무나 단순 노동이었고, 저거 말고도 해야 하는 데이터 전처리 작업이 너무 많이 있었다. 그래서 코드를 짰다. 

 

 

아래 코드는 비개발자가 짠 코드고, 문제가 있더라도 나의 사용 목적에 맞춰 잘 사용했으니
읽으시는 분께서도 너그러운 마음으로 받아주시길..
다만 약간의 지적은 겸허하게 받아들일 준비가 되어 있습니다.

 

# CP949 or ANSI
import shutil
import csv

f = open('./src/data.csv','r')
rdr = csv.reader(f)

for name in rdr:
    for i in range(0,len(name)):
        shutil.copy2('./src/xxx.jpg',str(name[i]))
        print(name)

f.close()

11줄짜리 코드고 더 짧게 쓰려면 더 짧게 쓸 수도 있는 코드겠지만 당시 내 역량은 여기까지였다.

 

 

상품 이미지가 없는 상품 코드에 확장자 명을 붙여서 data.csv라는 파일로 생성했다.

예를 들면, 12345.jpg 라는 데이터가 csv 파일로 있는 것이다. 

 

파일을 복사하는 라이브러리는 shutil 말고도 다른게 있는데, 이미지 파일에 적합한 라이브러리가 shutil이어서 이걸로 썼던 것 같다.(기억이 정확하지 않다.)

 

for문이 두번이었던 이유는 기억이 잘 안나지만, 반복 횟수와 csv 파일 내 각 셀 값, 12345.jpg 두가지 변수를 다 활용해야 했기 때문이었던 것 같다.

for i in range(0,len(name)):
        shutil.copy2('./src/xxx.jpg',str(name[i]))
        print(name)

 

 

xxx.jpg라는 파일명의 원본 이미지를 엑셀에 있는 파일명으로 복사하는 것이다.

shutil.copy2('./src/xxx.jpg',str(name[i]))

 

print(name)은 로그 확인용이고, 순식간에 지나간다. 당시에 복사를 300개 이하로 했어서 그다지 오래 걸리지 않았지만, 복사하는 양이 많다면 print(name)을 삭제해도 좋을 듯하다.

 

 

 

처음에 코드 짜는 건 거의 2~3시간이 걸렸다. 11줄 짜리인데 ... 라이브러리 찾는 거랑, 인코딩이랑, 개발 배울 때 리눅스에서 작업했어서 윈도우가 또 익숙치 않아 리눅스에서 코드짜고 돌리고 했었던듯 .. 여러가지 문제에 봉착하면서 작업할 때 시간가는 줄은 몰랐는데, 완성하고 보니.. 이 시간이면 파일명 수정하는게 더 빠르지 않았나 싶었다. 업무시간에 한 것도 아니고 업무 외 시간에 하고 있어서 좀 더 억울했달까?

 

 

그래도, 저 프로젝트는 정기적으로 하는 프로젝트라 그 이후에도 코드를 한 세 번 써먹었으니 결과적으로는 시간을 많이 세이브한 게 아닐까? 하는 혼자만의 위안을 가져본다. 이 프로젝트를 인수인계 할 때 이 걸 설명해야 하나 마나 고민 많이 했는데 그 땐 뭔가 조금 더 쉬운 방법을 찾을 수 있기를...

반응형

'얕은 개발 이야기' 카테고리의 다른 글

하나의 소스로 PC/Mobile에 최적화된 메일 코딩  (0) 2024.12.03
갑자기 분위기 이메일 코딩; 경험으로 쓰는 이메일 디자인/코딩 야매 가이드  (3) 2023.09.07
[Powershell] 파워쉘로 파일명 여러 개 한꺼번에 수정/삭제  (0) 2023.05.19
단위에 관하여: px, em, rem, vh, vw  (0) 2022.01.28
'얕은 개발 이야기' 카테고리의 다른 글
  • 하나의 소스로 PC/Mobile에 최적화된 메일 코딩
  • 갑자기 분위기 이메일 코딩; 경험으로 쓰는 이메일 디자인/코딩 야매 가이드
  • [Powershell] 파워쉘로 파일명 여러 개 한꺼번에 수정/삭제
  • 단위에 관하여: px, em, rem, vh, vw
mindo | 민도
mindo | 민도
기획하면서 배운 것들, 알게된 것들 소소하게 끄적이고 있습니다.
  • mindo | 민도
    기획하는 사람
    mindo | 민도
    • 분류 전체보기 (59)
      • 기획 N년차 (18)
        • Figma (7)
        • AI 활용기 (3)
        • 검색엔진최적화 | SEO (2)
        • 스터디 (1)
      • 얕은 개발 이야기 (9)
        • SQL (4)
      • 데이터분석 | 스터디 (6)
        • GA, GTM, GDS (6)
      • 기획 말고 소소한 이야기 (12)
      • 독후감 (1)
  • 최근 글

  • 반응형
  • 인기 글

  • 태그

    Figma
    데이터스튜디오
    구글애널리틱스
    기획자
    GDS
    SQL
    피그마
    기획
    ga
    글쓰기
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.1
mindo | 민도
파이썬으로 파일 복사 - 똑같은 파일을 파일명만 다르게 복제하기
상단으로

티스토리툴바