Pythonのshutil.copytree - 権限を無視
質問
Pythonのshutil.copytree
は非常に柔軟ではありません。 copytree
にコピーしているときに(その実装を再記述することなく)アクセス権を無視してのサポートを追加する最も簡単な方法は何ですか?
それ以外の場合は、copytree
は次のように失敗します:
(…)”[Errno 45] Operation not supported: ‘/path/foo/bar’”
解決
あなたは、標準のPythonディストリビューションにshutil.py
ている(Ubuntuの上で、鉱山は、例えば/usr/lib/python2.6
下で、WindowsがC:\Python26\lib
かもしれません?)。 (コメントをカウントしない場合は34)copytree機能はわずか38行の長さで、ドキュメンテーション文字列の最後には、明示的に述べます:
XXX Consider this example code rather than the ultimate tool.
だから、最も簡単な方法は、本当にcopytree、または別のライブラリを見つけ、正直に言うために数行を追加/変更することになります。
他のヒント
スレッドセーフではありません(一般的にはお勧めか)が、使い捨てのスクリプトのOKます:
import shutil _orig_copystat = shutil.copystat shutil.copystat = lambda x, y: x shutil.copytree(src, dst) shutil.copystat = _orig_copystat
所属していません StackOverflow