차밍이
[Python] 파일 옮기기 복사하기 - shutil 모듈 move copy 본문
컴퓨터로 작업을 하다 보면 특정 폴더에서 파일을 옮기거나 복사하는 작업을 하는 경우가 있습니다.
단순하게 그냥 쓱 옮기면 편한데,
가끔은 날짜별로 정리를 하는 등의 조건에 따라 분류를 해줘야 하는 경우도 생기면 번거로워집니다.
게다가 파일의 수가 많아지면 더욱 힘들어 지는 것이죠.
이럴 때 파이썬을 사용하면 쉽고 편하게 파일을 분류할 수 있습니다.
그래서 오늘은 디렉토리의 파일들을 옮기거나 복사하기 위해 shutil
모듈을 사용해보겠습니다.
파일 옮기기 : file move
파일을 옮기기 위해서 shutil.move
method를 사용하면 됩니다.
기존의 위치(src)에서 옮길 위치(dst)를 설정해 주면 됩니다.
shutil.move 예제 코드
import shutil
import os
filename = "temp.txt"
src = "E:\py_workspace\org_directory"
dst = "E:\py_workspace\new_directory"
shutil.move(os.path.join(src, filename), os.path.join(dst, filename))
# shutil.move(src + "/" + filename, dst + "/" + filename)
# os.path.join 은 디렉토리 형태로 합쳐주는 method입니다. 위의 두 코드의 결과는 동일합니다.
파일 복사 : file copy
파일을 복사하기는 shutil.copy
를 사용하면 됩니다.move
와 마찬가지로 기존의 위치 src에서 dst로 파일을 복사해 줍니다.
import shutil
import os
filename = "temp.txt"
src = "E:\py_workspace\org_directory"
dst = "E:\py_workspace\new_directory"
shutil.copy(os.path.join(src, filename), os.path.join(dst, filename))
조건에 따라 활용
특정 조건에 따라서 분류하는 방법에 대한 예시를 들어보겠습니다.
size 값에 따라서 폴더를 만들고 해당 폴더로 파일을 옮기는 것입니다.
size로 이루어진 폴더가 없으면 폴더를 만들고 만든 폴더 명은 set에 저장해 두었습니다.
그리고 해당 size를 가진 파일들은 size로 이루어진 폴더 안으로 move 하도록 하였습니다.
import shutil
import os
org_path = "E:\py_workspace\org_directory"
dst_path = "E:\py_workspace\new_directory"
files = os.listdir(org_path)
size_set = set()
for file in files:
menu, size, side = file.split(",")
if size not in size_list:
size_set.add(size)
os.mkdir(os.path.join(dst_path, size))
src = os.path.join(org_path, file)
dst = os.path.join(dst_path, size, file)
shutil.move(src, dst)
이런 방식으로 파일을 원하는 조건에 맞춰 분류하고 이동할 수 있습니다.
오류 발생 경우
FileNotFoundError: [Errno 2] No such file or directory:
shutil move 또는 shutil copy를 할 때, 위와 같은 에러가 발생하는 경우가 종종 있습니다.
Error가 발생되는 경우는 다음과 같습니다.
1. 기존 위치의 파일이 없거나 경로가 잘못된 경우
2. 옮길 위치의 폴더가 없는 경우
위의 두 가지 경우가 있습니다.
특히나 2번과 같이 옮길 위치 directory 중 없는 폴더가 있으면
폴더가 생성되지 않고 오류가 발생하는 경우가 많으니 한 번 다시 확인해 보시면 해결할 수 있을 것입니다.
지금까지 Shutil 모듈을 사용해서 파일을 move or copy 하는 방법에 대해서 알아보았습니다.
'파이썬 > 기본 문법 정리' 카테고리의 다른 글
Python - CPU Core 수 확인하는 2가지 방법 os, multiprocessing (0) | 2023.06.20 |
---|---|
[파이썬] Dataframe 대용량 빅데이터 빠르게 읽고 쓰는 방법 (0) | 2023.04.14 |
[Python] SQL 데이터 Pandas DataFrame으로 불러오기 & 저장하기 (0) | 2023.01.31 |
[Python] SQlite3 DB에 데이터 저장 및 조회 (1) | 2023.01.28 |
[Python] 랜덤한 데이터로 DataFrame 만들기 (0) | 2023.01.26 |
Pandas DataFrame 성능 빠르게하기 - apply말고 Vectorization쓰자 (2) | 2023.01.02 |
[Python] 파일 및 폴더 디렉토리 삭제하는 법 총정리 (0) | 2022.12.13 |
[Python] datetime 모듈 날짜 시간 포맷 맞추기와 포맷 코드 종류 (0) | 2022.07.08 |