質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top