2009-08-20 18 views
5

Python's shutil.copytree no es muy flexible; ¿Cuál es la forma más sencilla de agregar soporte para ignorar permisos mientras se copia en copytree (sin tener que volver a escribir su implementación)?python shutil.copytree - ignore los permisos

De lo contrario, copytree falla como esta:

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

Respuesta

3

Tienes shutil.py en su distribución estándar de Python (en Ubuntu, la mía es bajo /usr/lib/python2.6 por ejemplo, de Windows podría ser C:\Python26\lib?). La función copytree está a sólo 38 líneas de largo (34 si no se cuentan los comentarios), y al final de la cadena de documentación afirma explícitamente:

XXX Consider this example code rather than the ultimate tool.

Así que la forma más simple realmente sería cambiar/agregue un par de líneas a copytree, o encuentre otra biblioteca, para ser honesto.

+0

Eso es lo que hice antes de publicar esta pregunta. –

2

No es seguro para subprocesos (o aconsejable en general) pero está bien para un guión de usar y tirar:

 
import shutil 

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

shutil.copytree(src, dst) 

shutil.copystat = _orig_copystat 
Cuestiones relacionadas