Existe-t-il un moyen facile d'émuler la commande cp -r from_dir/* to_dir
avec python? shutil.copytree
ne convient pas car to_dir
existe.cp -r from_dir/* to_dir avec python
Répondre
Jetez un oeil au code source de shutil.copytree
, l'adapter et de l'utilisation:
def copytree(src, dst, symlinks=False, ignore=None):
"""Recursively copy a directory tree using copy2().
The destination directory must not already exist.
If exception(s) occur, an Error is raised with a list of reasons.
If the optional symlinks flag is true, symbolic links in the
source tree result in symbolic links in the destination tree; if
it is false, the contents of the files pointed to by symbolic
links are copied.
The optional ignore argument is a callable. If given, it
is called with the `src` parameter, which is the directory
being visited by copytree(), and `names` which is the list of
`src` contents, as returned by os.listdir():
callable(src, names) -> ignored_names
Since copytree() is called recursively, the callable will be
called once for each directory that is copied. It returns a
list of names relative to the `src` directory that should
not be copied.
XXX Consider this example code rather than the ultimate tool.
"""
names = os.listdir(src)
if ignore is not None:
ignored_names = ignore(src, names)
else:
ignored_names = set()
os.makedirs(dst)
errors = []
for name in names:
if name in ignored_names:
continue
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks, ignore)
else:
copy2(srcname, dstname)
# XXX What about devices, sockets etc.?
except (IOError, os.error), why:
errors.append((srcname, dstname, str(why)))
# catch the Error from the recursive copytree so that we can
# continue with other files
except Error, err:
errors.extend(err.args[0])
try:
copystat(src, dst)
except OSError, why:
if WindowsError is not None and isinstance(why, WindowsError):
# Copying file access times may fail on Windows
pass
else:
errors.extend((src, dst, str(why)))
if errors:
raise Error, errors
vous avez juste besoin copytree
avec le nom correct (ou même nom)
shutil.copytree("/path/from_dir","/destination/from_dir")
import glob
import subprocess
subprocess.check_call(["cp", "-rt", "to_dir"] + glob.glob("from_dir/*"))
Parfois, c'est sympa de tout faire directement en Python. là encore, il est souvent plus agréable d'appeler simplement la commande que vous savez contrôler et connaître.
Je ne hésite pas à réécrire cette si lorsque les besoins changent, mais jusque-là, il est court et facile à lire - plus de temps est mieux dépensé sur de plus gros problèmes. Un bon exemple de la façon dont ils pourraient changer signale une erreur: vous avez rien dit à ce sujet, mais je ne serais pas la sortie analyse pas cp une fois ce qui est nécessaire.
Il faut aussi mentionner que 'cp' pourrait générer une sortie, que vous ne voulez pas. Pensez à envoyer stdout/stderr à '/ dev/null'. – bstpierre
ce qui est très semblable à ce que je fais maintenant, mais ce n'est pas portable –
@wiso: Pourriez-vous mettre à jour la question avec vos plates-formes/environnements cibles? –
- 1. grep -r en python
- 2. Groovy exécuter « cp * » commande shell
- 3. java -cp "lib/*" versus java -cp "lib/*. Jar"
- 4. Lot 'svn cp' côté serveur
- 5. commande cp ne sous Linux
- 6. Convertir un code R en script Python
- 7. Problèmes avec le grand répertoire et la commande cp
- 8. Bayes hiérarchiques pour R ou Python
- 9. "cp --parents" dans le fichier batch/VBScript
- 10. Rake cp permission refusée sous Windows
- 11. organigramme de la commande "cp" dans linux
- 12. Comportement inattendu dans R avec la commande cat dans R
- 13. hexbin de base avec R?
- 14. Modèle linéaire avec contraintes, [R]
- 15. Accès OAuth pour R
- 16. R manipulation de tableau
- 17. Que signifient les parenthèses en python: table [r] [pos + i]?
- 18. Python (ou numpy) équivalent de correspondance dans R
- 19. Analyse d'images en R
- 20. triture des éléments du tableau python avec un vecteur similaire à matlab/R
- 21. Mappage du tuple python et de la liste R avec rpy2?
- 22. problème avec rpy2, Rpart passage des données correctement de python à r
- 23. matplotlib pour l'utilisateur R?
- 24. en utilisant R pour copier des fichiers
- 25. Développement de cartes thématiques géographiques avec R
- 26. Lignes supprimées dans R avec read.table?
- 27. Comment NSLog avec \ n \ r \ t
- 28. Premiers pas avec Sweave, Eclipse et R
- 29. R, zoo avec analyse des performances
- 30. .NET couplé avec MATLAB ou R?
ce n'est pas la même chose, je veux copier le contenu du répertoire, pas le répertoire –