我有一个目录/ 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"
。
答案 0 :(得分:104)
我发现此代码有效。
from distutils.dir_util import copy_tree
# copy subdirectory example
fromDirectory = "/a/b/c"
toDirectory = "/x/y/z"
copy_tree(fromDirectory, toDirectory)
参考:
答案 1 :(得分:1)
你也可以使用glob2递归收集所有路径(使用**子文件夹通配符),然后使用shutil.copyfile,保存路径
glob2 link:https://code.activestate.com/pypm/glob2/
答案 2 :(得分:1)
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 。
答案 3 :(得分:-7)
使用此函数已经废弃了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('..')