본문 바로가기
Programming/Python

[Python] shutil

by goatlab 2022. 8. 19.
728x90
반응형
SMALL

shutil

 

shutil 모듈은 파일과 파일 모음에 대한 여러 가지 고수준 연산을 제공한다. 특히, 파일 복사와 삭제를 지원하는 함수가 제공된다. 개별 파일에 대한 연산에 대해서는 os 모듈을 참조하면 된다.

 

파일 이동

 

import os 
import shutil 
  
# path 
path = 'C:/Users'
  
# List files and directories 
print("Before moving file:") 
print(os.listdir(path)) 
  
# Source path 
source = 'C:/Users/source'
  
# Destination path 
destination = 'C:/Users/destination'
  
# Move source to destination 
move_file = shutil.move(source, destination)
import shutil
import os
 
file_source = 'C:/Users/source'
file_destination = 'C:/Users/destination'
 
get_files = os.listdir(file_source)
 
for g in get_files:
    shutil.move(file_source + g, file_destination)
    
# 또는 os.replace를 사용
for g in get_files:
    os.replace(file_source + g, file_destination + g)

 

pathlib 모듈은 다른 파일과 사전을 조작하는 데 사용되는 객체를 제공하는 데 사용되는 표준 모듈이다. 파일 작업을위한 핵심 개체를 Path라고 한다.

 

from pathlib import Path
import shutil
import os

file_source = 'C:/Users/source'
file_destination = 'C:/Users/destination''

for file in Path(file_source).glob('randomfile.txt'):
    shutil.move(os.path.join(file_source,file),file_destination)

 

파일 복사

 

copyfile과 copy는 메타정보는 복사되지 않는다. copy2는 메타정보까지 복사한다. 즉, copy2를 사용하면 파일을 작성한 날짜도 복사되지만 copyfile과 copy는 파일을 작성한 날짜가 복사한 날짜로 변경된다.

 

import shutil

shutil.copyfile("./test1/test1.txt", "./test2.txt")

shutil.copy("./test1/test1.txt", "./test3.txt")

shutil.copy2("./test1/test1.txt", "./test4.txt")

 

폴더 복사

 

shutil.copytree는 기존 폴더에 들어있는 파일과 폴더를 복사한다. 복사된 폴더는 기존에 존재하지 않은 폴더로 copytree 함수가 실행될때 새로 만들어진다.

 

shutil.copytree("./test1", "./test2")

 

만약, 폴더가 이미 존재하면 에러가 발생한다. 이미 존재하는 폴더에 복사를 하고 싶은 경우는

 

copy_tree("./test1", "./test2")

 

를 사용한다.

 

https://docs.python.org/ko/3/library/shutil.html

 

shutil — 고수준 파일 연산 — Python 3.10.6 문서

shutil — 고수준 파일 연산 소스 코드: Lib/shutil.py shutil 모듈은 파일과 파일 모음에 대한 여러 가지 고수준 연산을 제공합니다. 특히, 파일 복사와 삭제를 지원하는 함수가 제공됩니다. 개별 파일

docs.python.org

 

728x90
반응형
LIST