source

디렉토리 내용을 python으로 디렉토리에 복사

manysource 2023. 9. 7. 21:48

디렉토리 내용을 python으로 디렉토리에 복사

파일과 서브디렉토리가 있는 /a/b/c 디렉토리를 가지고 있습니다./x/y/z 디렉토리에 /a/b/c/*를 복사해야 합니다.어떤 파이썬 방법을 사용할 수 있습니까?

나는 노력했다.shutil.copytree("a/b/c", "/x/y/z"), 그러나 python은 /x/y/z를 만들려고 시도하고,error "Directory exists".

표준 라이브러리의 일부인 코드가 작동하는 것을 발견했습니다.

from distutils.dir_util import copy_tree

# copy subdirectory example
from_directory = "/a/b/c"
to_directory = "/x/y/z"

copy_tree(from_directory, to_directory)

참조:

  • 파이썬 2: https://docs.python.org/2/distutils/apiref.html#distutils.dir_util.copy_tree
  • 파이썬 3: https://docs.python.org/3/distutils/apiref.html#distutils.dir_util.copy_tree

glob2를 사용하여 (** 하위 폴더 와일드카드 사용) 모든 경로를 재귀적으로 수집한 다음 shutil.copyfile을 사용하여 경로를 저장할 수도 있습니다.

glob2 link : https://code.activestate.com/pypm/glob2/

from subprocess import call

def cp_dir(source, target):
    call(['cp', '-a', source, target]) # Linux

cp_dir('/a/b/c/', '/x/y/z/')

저한테는 효과가 있어요.기본적으로 shell command cp를 실행합니다.

파이썬 립스는 이 기능으로 더 이상 쓸모가 없습니다.제대로 작동하는 작업을 해봤습니다.

import os
import shutil

def copydirectorykut(src, dst):
    os.chdir(dst)
    list=os.listdir(src)
    nom= src+'.txt'
    fitx= open(nom, 'w')

    for item in list:
        fitx.write("%s\n" % item)

    fitx.close()

    f = open(nom,'r')
    for line in f.readlines():
        if "." in line:
            shutil.copy(src+'/'+line[:-1],dst+'/'+line[:-1])
        else:
            if not os.path.exists(dst+'/'+line[:-1]):
                os.makedirs(dst+'/'+line[:-1])
                copydirectorykut(src+'/'+line[:-1],dst+'/'+line[:-1])
            copydirectorykut(src+'/'+line[:-1],dst+'/'+line[:-1])
    f.close()
    os.remove(nom)
    os.chdir('..')

언급URL : https://stackoverflow.com/questions/15034151/copy-directory-contents-into-a-directory-with-python