2009-08-20 6 views
5

Le shutil.copytree de Python n'est pas très flexible; quel est le moyen le plus simple d'ajouter le support pour ignorer les autorisations lors de la copie en copytree (sans avoir à réécrire son implémentation)?python shutil.copytree - ignore les permissions

Sinon, copytree échoue comme ceci:

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

Répondre

3

Vous avez shutil.py dans votre distribution standard de Python (sur Ubuntu, le mien est sous /usr/lib/python2.6 par exemple, Windows peut être C:\Python26\lib?). La fonction copytree est seulement 38 lignes longues (34 si vous ne comptez pas les commentaires), et la fin de la docstring déclare explicitement:

XXX Consider this example code rather than the ultimate tool.

donc vraiment la façon la plus simple serait de changer/ajouter quelques lignes à copytree, ou trouver une autre bibliothèque, pour être honnête.

+0

C'est ce que je l'ai fait avant de poster cette question. –

2

Pas thread-safe (ou souhaitable en général), mais OK pour un script jetable:

 
import shutil 

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

shutil.copytree(src, dst) 

shutil.copystat = _orig_copystat 
Questions connexes