ファイルとサブディレクトリを含むディレクトリ/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"
ます。
標準ライブラリの一部であるこのコードが機能していることがわかりました。
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)
参照:
また、glob2を使用してすべてのパスを再帰的に収集し(**サブフォルダーワイルドカードを使用)、shutil.copyfileを使用してパスを保存することもできます。
from subprocess import call
def cp_dir(source, target):
call(['cp', '-a', source, target]) # Linux
cp_dir('/a/b/c/', '/x/y/z/')
わたしにはできる。基本的には、シェルコマンドcpを実行します。
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('..')