2009-08-20 19 views
5

Python's shutil.copytree nie jest zbyt elastyczny; jaki jest najprostszy sposób dodania obsługi ignorowania uprawnień podczas kopiowania w copytree (bez konieczności ponownego napisania jej implementacji)?python shutil.copytree - ignoruj ​​uprawnienia

Inaczej copytree nie tak:

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

Odpowiedz

3

Masz shutil.py w standardowej dystrybucji Pythona (na Ubuntu, kopalnia jest pod /usr/lib/python2.6 na przykład, Windows może być C:\Python26\lib?). Funkcja copytree ma tylko 38 linie (34, jeśli nie liczyć komentarzy), a koniec docstring wyraźnie stwierdza:

XXX Consider this example code rather than the ultimate tool.

więc najprostszym sposobem byłoby naprawdę do zmian/dodaj kilka linii do copytree lub znajdź inną bibliotekę, szczerze mówiąc.

+0

To co zrobiłem przed wysłaniem na to pytanie. –

2

Nie wątku bezpieczny (lub wskazane w ogóle), ale OK, na wyrzucenie skryptu:

 
import shutil 

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

shutil.copytree(src, dst) 

shutil.copystat = _orig_copystat