bar
という名前のディレクトリ(1 つ以上のファイルを含む) と という名前のディレクトリ(これも 1 つ以上のファイルを含む) を含むディレクトリから次のコードを実行しますbaz
。 という名前のディレクトリがないことを確認してくださいfoo
。
import shutil
shutil.copytree('bar', 'foo')
shutil.copytree('baz', 'foo')
次の場合は失敗します:
$ python copytree_test.py
Traceback (most recent call last):
File "copytree_test.py", line 5, in <module>
shutil.copytree('baz', 'foo')
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/shutil.py", line 110, in copytree
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py", line 172, in makedirs
OSError: [Errno 17] File exists: 'foo'
次のように入力した場合と同じように動作するようにしたいです。
$ mkdir foo
$ cp bar/* foo/
$ cp baz/* foo/
shutil.copy()
各ファイルを にコピーするには をbaz
使用する必要がありますかfoo
? ( で 'bar' の内容を 'foo' にコピーした後ですかshutil.copytree()
?) それとも、もっと簡単な/良い方法がありますか?
ベストアンサー1
標準ライブラリの一部であるソリューションは次のとおりです。
from distutils.dir_util import copy_tree
copy_tree("/a/b/c", "/x/y/z")
同様の質問を参照してください。