python shutil.copytree - игнорировать разрешения - PullRequest
5 голосов
/ 20 августа 2009

Python's shutil.copytree не очень гибок; Как проще всего добавить поддержку игнорирования разрешений при копировании в copytree (без необходимости переписывать его реализацию)?

В противном случае copytree терпит неудачу так:

(…)”[Errno 45] Operation not supported: ‘/path/foo/bar’”

Ответы [ 2 ]

3 голосов
/ 20 августа 2009

У вас есть shutil.py в вашем стандартном дистрибутиве Python (в Ubuntu, например, у меня меньше /usr/lib/python2.6; Windows может быть C:\Python26\lib?). Функция copytree имеет длину всего 38 строк (34, если вы не учитываете комментарии), и конец строки документа прямо заявляет:

XXX Consider this example code rather than the ultimate tool.

Так что на самом деле самый простой способ - это изменить / добавить пару строк в copytree или найти другую библиотеку, если честно.

2 голосов
/ 10 июня 2013

Не поточно-ориентированный (или вообще не рекомендуется), но хорошо для одноразового сценария:

import shutil

_orig_copystat = shutil.copystat
shutil.copystat = lambda x, y: x

shutil.copytree(src, dst)

shutil.copystat = _orig_copystat
...