1. ホーム
  2. python

[解決済み] Pythonでファイルやディレクトリを再帰的にコピーする

2022-06-08 20:51:05

質問

Pythonにはファイルをコピーするための関数があるようです(例えば shutil.copy ) とディレクトリをコピーするための関数 (例えば shutil.copytree ) がありますが、両方を扱う関数は見つかっていません。確かに、ファイルかディレクトリのどちらをコピーしたいかを確認するのは簡単なことですが、奇妙な省略のように思われます。

のように動作する標準的な関数は本当に存在しないのでしょうか? cp -r コマンドのように動作する標準的な関数、すなわちディレクトリとファイルの両方をサポートし、再帰的にコピーする関数は本当にないのでしょうか?Python でこの問題を回避する最もエレガントな方法は何でしょうか?

どのように解決するのですか?

まず shutil.copytree を呼び出し、例外が発生した場合は、再度 shutil.copy .

import shutil, errno

def copyanything(src, dst):
    try:
        shutil.copytree(src, dst)
    except OSError as exc: # python >2.5
        if exc.errno in (errno.ENOTDIR, errno.EINVAL):
            shutil.copy(src, dst)
        else: raise