티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Copy multiple files in Python

파이썬에서 여러 파일 복사하기

 문제 내용 

How to copy all the files present in one directory to another directory using Python. I have the source path and the destination path as string.

파이썬을 사용하여 하나의 디렉토리에 있는 모든 파일을 다른 디렉토리로 복사하는 방법을 알려주세요. 저는 소스 경로와 대상 경로를 문자열로 가지고 있어요.

 

 

 

 높은 점수를 받은 Solution 

You can use os.listdir() to get the files in the source directory, os.path.isfile() to see if they are regular files (including symbolic links on *nix systems), and shutil.copy to do the copying.

소스 디렉토리에 있는 파일을 가져 오기 위해 os.listdir()를 사용하고, 일반 파일(유닉스 시스템의 심볼릭 링크 포함)인지 여부를 확인하기 위해 os.path.isfile()을 사용하며, 복사를 위해 shutil.copy를 사용할 수 있습니다.

 

The following code copies only the regular files from the source directory into the destination directory (I'm assuming you don't want any sub-directories copied).

다음 코드는 소스 디렉토리에서 정규 파일만 대상 디렉토리로 복사합니다(하위 디렉토리는 복사하지 않는 것으로 가정합니다).
import os
import shutil
src_files = os.listdir(src)
for file_name in src_files:
    full_file_name = os.path.join(src, file_name)
    if os.path.isfile(full_file_name):
        shutil.copy(full_file_name, dest)

 

 

 가장 최근 달린 Solution 

Here is another example of a recursive copy function that lets you copy the contents of the directory (including sub-directories) one file at a time, which I used to solve this problem.

다음은 디렉토리 내용(하위 디렉토리 포함)을 하나의 파일씩 복사할 수 있는 재귀 복사 함수의 또 다른 예입니다. 이 방법을 사용하여 이 문제를 해결했습니다.
import os
import shutil

def recursive_copy(src, dest):
    """
    Copy each file from src dir to dest dir, including sub-directories.
    """
    for item in os.listdir(src):
        file_path = os.path.join(src, item)

        # if item is a file, copy it
        if os.path.isfile(file_path):
            shutil.copy(file_path, dest)

        # else if item is a folder, recurse 
        elif os.path.isdir(file_path):
            new_dest = os.path.join(dest, item)
            os.mkdir(new_dest)
            recursive_copy(file_path, new_dest)

 

EDIT: If you can, definitely just use shutil.copytree(src, dest). This requires that that destination folder does not already exist though. If you need to copy files into an existing folder, the above method works well!

참고: 가능하면 shutil.copytree(src, dest)를 사용하세요. 그러나 대상 폴더가 이미 존재하지 않아야 합니다. 기존 폴더에 파일을 복사해야 하는 경우 위의 방법이 잘 작동합니다!

 

 

 

출처 : https://stackoverflow.com/questions/3397752/copy-multiple-files-in-python

반응형
댓글
공지사항
최근에 올라온 글