Python - 파일, 디렉토리 복사

By JS | Last updated: July 03, 2021

파일 또는 디렉토리 복사 방법을 소개합니다.

shutil.copy() : 파일 복사

shutil.copy(src, des)는 인자로 전달된 src 경로의 파일을 des 경로로 복사합니다.

import os
import shutil

shutil.copy("/tmp/my_test.txt", "/tmp/my_test_2.txt")

if os.path.exists("/tmp/my_test_2.txt"):
    print("exists")

Output:

exists

shutil.copytree() : 디렉토리 복사

shutil.copytree(src, des)는 src 경로의 디렉토리를 des 경로로 복사합니다. 디렉토리 안에 있는 모든 파일이 함께 복사됩니다.

예를 들어, /tmp/test_dir 경로에 다음과 같은 파일들이 있습니다.

/tmp/test_dir$ ls
t1.txt  t2.txt  t3.txt

다음 코드는 이 디렉토리를 /tmp/test_dir_2 경로로 복사합니다.

import os
import shutil

shutil.copytree("/tmp/test_dir", "/tmp/test_dir_2")

for f in os.listdir("/tmp/test_dir_2"):
    print(f)

Output:

t1.txt
t2.txt
t3.txt

shutil.copytree()으로 디렉토리를 복사할 때, 복사할 경로에 다른 파일이 이미 존재할 때, 아래와 같은 에러가 발생합니다.

Traceback (most recent call last):
  File "/home/mjs/IdeaProjects/python-examples/copy-file-and-dir.py", line 13, in <module>
    shutil.copytree("/tmp/test_dir", "/tmp/test_dir_2")
  File "/usr/lib/python3.8/shutil.py", line 557, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/usr/lib/python3.8/shutil.py", line 458, in _copytree
    os.makedirs(dst, exist_ok=dirs_exist_ok)
  File "/usr/lib/python3.8/os.py", line 223, in makedirs
    mkdir(name, mode)
FileExistsError: [Errno 17] File exists: '/tmp/test_dir_2'

이런 경우를 위해, 미리 확인하고 복사해야합니다.

import os
import shutil

if not os.path.exists("/tmp/test_dir_2"):
    shutil.copytree("/tmp/test_dir", "/tmp/test_dir_2")

References

Related Posts

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha