디렉토리 내용을 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
'source' 카테고리의 다른 글
특정 셀로 하이퍼링크하기 (0) | 2023.09.07 |
---|---|
MariaDB/"mysql shell"을 사용하여 가져오는 동안 오류 1064(42000)가 발생하는 이유는 무엇입니까? (0) | 2023.09.07 |
양식을 사용하여 더 많은 정보 저장인증.인증 쿠키 설정 (0) | 2023.09.07 |
PowerShell - "Write-Output" vs "return" 함수 (0) | 2023.09.07 |
url()의 값을 인용할 필요가 있습니까? (0) | 2023.09.02 |