728x90
파일 복사하기 shutil.copy() 와 shutil.copy2()
해당 경로에 원본 파일명과 동일한 파일을 복사합니다. (덮어쓰기 가능)
shutil.copy() 와 shutil.copy2() 의 차이점은, copy2() 는 메타정보까지 복사합니다.
다음 예로 copy() 는 src 파일 과 dst 파일의 mtime이 차이가 있습니다. (메타정보)
import os
import shutil
import datetime
path = os.path.dirname(os.path.abspath(__file__))
fname = 'file.txt'
dir_name = 'test_dir'
copy_dir_name = 'copy'
os.chdir(dir_name)
mtime = os.path.getmtime(fname)
mtime = datetime.datetime.fromtimestamp(mtime).replace(microsecond=0)
print(fname, mtime)
shutil.copy(fname, 'copy')
os.chdir(copy_dir_name)
mtime = os.path.getmtime(fname)
mtime = datetime.datetime.fromtimestamp(mtime).replace(microsecond=0)
print(fname, mtime)
더보기
file.txt 2020-06-30 15:45:01
file.txt 2020-06-30 15:58:27
copy2()의 mtime 은 동일합니다.
import os
import shutil
import datetime
path = os.path.dirname(os.path.abspath(__file__))
fname = 'file.txt'
dir_name = 'test_dir'
copy_dir_name = 'copy'
os.chdir(dir_name)
mtime = os.path.getmtime(fname)
mtime = datetime.datetime.fromtimestamp(mtime).replace(microsecond=0)
print(fname, mtime)
shutil.copy2(fname, 'copy')
os.chdir(copy_dir_name)
mtime = os.path.getmtime(fname)
mtime = datetime.datetime.fromtimestamp(mtime).replace(microsecond=0)
print(fname, mtime)
더보기
file.txt 2020-06-30 15:45:01
file.txt 2020-06-30 15:45:01
디렉터리 복사 shutil.copytree()
shutil.copytree() 는 하위항목을 포함한 디렉터리를 복사합니다.
import os
import shutil
path = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'
copy_dir = 'data2'
print(*os.listdir(dir_name))
shutil.copytree(dir_name, copy_dir)
print(*os.listdir(copy_dir))
더보기
a b
a b
동일한 경로가 있을 경우 에러 발생
Traceback (most recent call last):
File "c:/Users/Desktop/python/os_/ex7.py", line 11, in <module>
shutil.copytree(dir_name, copy_dir)
File "C:\ProgramData\Anaconda3\envs\py36\lib\shutil.py", line 321, in copytree
os.makedirs(dst)
File "C:\ProgramData\Anaconda3\envs\py36\lib\os.py", line 220, in makedirs
mkdir(name, mode)
FileExistsError: [WinError 183] 파일이 이미 있으므로 만들 수 없습니다: 'data2'
경로가 존재하지 않으면 디렉터리 생성하여 복사 진행
import os
import shutil
path = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'
print(*os.listdir(dir_name))
copy_dir = 'copy/data'
shutil.copytree(dir_name, copy_dir)
print(*os.listdir(copy_dir))
더보기
a b
a b
'Language > Python' 카테고리의 다른 글
파이썬 send2trash 모듈 다루기 - 휴지통으로 파일 삭제 (0) | 2020.07.03 |
---|---|
파이썬 OS 모듈 - 하위 디렉터리 검색 os.walk() (0) | 2020.07.02 |
파이썬 __file__, 절대경로, 상대경로 os.path.abspath os.path.relpath (0) | 2020.06.30 |
파이썬 win32gui 모듈 다루기 - 현재 창 이름 구하기 (0) | 2020.06.30 |
파이썬 클립보드(clipboard) 모듈 다루기 (1) | 2020.06.30 |