본문 바로가기
python

python을 이용하여 디렉터리를 생성하고 파일 이동하기

by 황인태(intaehwang) 2020. 6. 17.
반응형

공공데이터 분류 작업을 하면서 다음과 같은 작업이 필요하였다.

  1. 파일을 다운 받는다.
  2. 다운 받은 파일 이름으로 디렉터리를 만들고 이동시킨다.
  3. 디렉터리의 앞에는 분류명을 명시해야 한다.

처음에는 먼저 디렉터리를 만들기 위해 .bat 파일을 만들어서 작업하려고 했으나 파일을 일일이 이동시켜야 했다. 그래서 리눅스의 mv와 비슷한 python 코드가 있지 않을까? 싶어서 찾아봤다. python 내부 라이브러리 중 shutil이 있었다.

shutil.move(file, dir)     # file을 dir로 이동

그리고 os 라이브러리에 makedirs(path, exist_ok=True) 가 있었다.      # exist_ok=True 옵션은 디렉터리 생성 경로에 디렉터리가 없을 경우 자동으로 생성해주는 옵션이다.

따라서 1, 2, 3의 과정을 간편하게 코딩으로 해결할 수 있었다.

glob를 이용하여 파일 목록을 생성할 경우 절대 경로와 확장자 까지 string으로 저장된다. 따라서 replace를 이용하여 불필요한 문자열은 제거하였다.

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
import os
import glob
import shutil
 
# 다운받은 시간 순서로 정렬하기
list = sorted(glob.glob("C:/Users/{사용자명}/Downloads/*.*"), key=os.path.getmtime)
 
# 파일 이동을 위한 경로 설정
path = "C:/Users/..../보건의료/"
 
# 분류명
head = "보건의료"
 
head = "[" + head
head += "] "
 
# 디렉터리 만들기
for i in list:
    dir = i
    i = i.replace("C:/Users/{사용자명}/Downloads\\""")
    i = i.replace(".csv""")
    i = i.replace(".xls""")
    i = i.replace(".xlsx""")
    i = head + i
    os.makedirs(path + i, exist_ok=True)
    
    # 파일 이동하기
    shutil.move(dir, path + i)
cs
반응형
Buy me a coffeeBuy me a coffee

댓글