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
728x90
반응형
LIST
'Programming > Python' 카테고리의 다른 글
[Python] set (집합 자료형) (0) | 2022.09.04 |
---|---|
ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다 (0) | 2022.08.22 |
[Python] YAML (YAML Ain’t Markup Language) (0) | 2022.08.17 |
UnicodeEncodeError: 'cp949' codec can't encode character illegal multibyte sequence (0) | 2022.08.17 |
[Python] JSON (JavaScript Object Notation) (0) | 2022.08.17 |