python shutil.copytree - ignorer les autorisations
Question
Le shutil.copytree
Python est pas très flexible; ce qui est la façon la plus simple d'ajouter le support pour ignorer les autorisations lors de la copie dans copytree
(sans avoir à réécrire sa mise en œuvre)?
Dans le cas contraire, ne copytree
comme ceci:
(…)”[Errno 45] Operation not supported: ‘/path/foo/bar’”
La solution
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 longue seulement 38 lignes (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.
Alors, vraiment la façon la plus simple serait de changer / ajouter quelques lignes à copytree, ou trouver une autre bibliothèque, pour être honnête.
Autres conseils
Non 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