110

ファイルとサブディレクトリを含むディレクトリ/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"ます。

4

4 に答える 4

198

標準ライブラリの一部であるこのコードが機能していることがわかりました。

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)

参照:

于 2013-02-22T22:36:45.647 に答える
4

また、glob2を使用してすべてのパスを再帰的に収集し(**サブフォルダーワイルドカードを使用)、shutil.copyfileを使用してパスを保存することもできます。

glob2リンク:https ://code.activestate.com/pypm/glob2/

于 2014-08-29T05:55:59.163 に答える
1
from subprocess import call

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

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

わたしにはできる。基本的には、シェルコマンドcpを実行します。

于 2018-05-14T13:39:45.527 に答える
-14

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('..')
于 2016-08-01T12:15:12.203 に答える