2009-08-20 22 views
5

Python shutil.copytree non è molto flessibile; qual è il modo più semplice per aggiungere il supporto per ignorare le autorizzazioni durante la copia in copytree (senza dover riscrivere la sua implementazione)?python shutil.copytree - ignora permessi

In caso contrario, copytree fallisce in questo modo:

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

risposta

3

Hai shutil.py nella vostra distribuzione Python standard (su Ubuntu, il mio è sotto /usr/lib/python2.6 per esempio, Windows potrebbe essere C:\Python26\lib?). La funzione copytree è lungo solo 38 linee (34, se non si contano i commenti), e la fine della docstring afferma esplicitamente:

XXX Consider this example code rather than the ultimate tool.

Quindi il modo più semplice in realtà sarebbe quello di cambiare/aggiungi un paio di righe a copytree o trova un'altra libreria, a essere onesti.

+0

Questo è quello che ho fatto prima di pubblicare questa domanda. –

2

Non thread-safe (o consigliabile in generale), ma OK per uno script usa e getta:

 
import shutil 

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

shutil.copytree(src, dst) 

shutil.copystat = _orig_copystat