使用python将目录内容复制到目录中[duplicate]

问题描述 投票:73回答:4

我有一个目录/ a / b / c,其中包含文件和子目录。我需要在/ x / y / z目录中复制/ a / b / c / *。我可以使用哪些python方法?

我尝试过shutil.copytree("a/b/c", "/x/y/z"),但是python尝试创建/ x / y / z并引发error "Directory exists"

python shutil copytree
4个回答
135
投票

我发现此代码有效:

from distutils.dir_util import copy_tree

# copy subdirectory example
fromDirectory = "/a/b/c"
toDirectory = "/x/y/z"

copy_tree(fromDirectory, toDirectory)

参考:


2
投票
from subprocess import call

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

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

它对我有用。基本上,它执行shell命令cp


1
投票

您还可以使用glob2递归收集所有路径(使用**子文件夹通配符,然后使用shutil.copyfile,保存路径)>

glob2链接:https://code.activestate.com/pypm/glob2/


-9
投票

Python库已不再使用此功能。我已经做了一个可以正常工作的东西:]

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('..')
© www.soinside.com 2019 - 2024. All rights reserved.