[python] file - shutil.move
shutil.move(src, dest, copy_function=copy2)
-
src에 해당하는 file or directory를 dest로 옮기고, 대상을 반환한다.
-
기본적으로 copy_function은 copy2()로 지정되어 있지만, copy()와 같이 다른 함수를 넣을 수도 있다.
→ copy2는 파일의 메타데이터도 함께 복사해준다. 하지만 이 과정에서 복사에 실패하는 파일이 생길 수도 있다.
→ copy는 파일의 메타데이터를 복사해주지 않는다. 대신, 메타데이터 복사에 드는 비용을 절약하여, copy2에서는 복사 실패하는 파일들이 성공할 수 있다.
-
src가 directory이면, copy_function으로 copytree()가 호출된다.
1. move의 동작
: src를 dest로 복사 > src를 제거 > dest를 반환
# 예제
# test.py가 'test' directory 아래에 test2.py라는 이름으로 저장될 수 있도록 파일을 옮겨라.
src = 'test.py'
dest = './test/test2.py'
print(shutil.move(src, dest)) # ./test/test2.py
※ 알아두기
: dest가 directory일 경우, 해당 directory는 파일 시스템 내에 이미 존재하고 있어야 한다.
그렇지 않을 경우, FileNotFoundError가 발생한다.
2. src가 file인 경우
1) dest가 file
- 동일한 이름의 file이 이미 존재하면 os.rename()이 사용되어 덮어쓰기가 수행된다.
- 동일한 이름의 file이 존재하지 않으면, copy_function을 그대로 사용해서 src를 dest에 copy한 후, src를 제거한다.
2) dest가 directory
- dest가 이미 존재하는 directory이면, src는 해당 directory 내부로 이동한다.
- dest가 존재하지 않는 directory이면, FileNotFoundError가 발생한다.
3. src가 directory인 경우 - dest도 directory
1) dest로 지정한 directory가 이미 존재하는 경우
- src directory가 dest directory의 아래로 이동한다.
2) dest로 지정한 directory가 존재하지 않는 경우
- directory의 이름이 변경된다.
※ 알아두기
shutil('./p1/', './p1/')
: src directory와 dest directory가 같은 경우, 아무 일도 일어나지 않고 None을 출력한다.
Author And Source
이 문제에 관하여([python] file - shutil.move), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@apphia39/python-shutil-move저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)