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’”
Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top