IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Déplacer un répertoire dans un autre


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    ingénierie gros ouvrages mobiles
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ingénierie gros ouvrages mobiles
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Déplacer un répertoire dans un autre
    Bonjour à tous,

    Mes meilleurs vœux de programmation

    En complément du titre, les deux répertoires possèdent sensiblement la même arborescence (ce sont de répertoires de sauvegarde). en cas de doublon, je souhaite que la source écrase la destination, le déplacement doit être récursif.
    J'ai essayé avec shutil.move mais il ne gère pas les doublons comme je le souhaite.

    Existe-t-il dans la bibliothèque une fonction adaptée qui m'éviterait de la programmer ?

    Merci d'avance de vos eclairages

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par johnsdoeuf Voir le message
    Existe-t-il dans la bibliothèque une fonction adaptée qui m'éviterait de la programmer ?
    Il suffit d'ouvrir et lire la documentation de la bibliothèque shutil. Vous y trouverez que copytree est peut être plus approprié et même un exemple de code que vous pourrez adapter.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    ingénierie gros ouvrages mobiles
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ingénierie gros ouvrages mobiles
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    J'ai cherché dans les bibliothèques shutils et os

    Copytree ne semble pas répondre au problème :
    The destination directory, named by dst, must not already exist
    En outre, une copie nécessitera sensiblement davantage de ressources disques puis un effacement.

    D'autres idées ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par johnsdoeuf Voir le message
    Copytree ne semble pas répondre au problème :
    En outre, une copie nécessitera sensiblement davantage de ressources disques puis un effacement.
    Certes, c'est la raison pour laquelle je vous ai suggéré d'adapter l'exemple qui est une implémentation de copytree.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    ingénierie gros ouvrages mobiles
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ingénierie gros ouvrages mobiles
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Mes excuses, je n'avais pas bien compris
    Je vais essayer sur cette base

  6. #6
    Membre à l'essai
    Homme Profil pro
    ingénierie gros ouvrages mobiles
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : ingénierie gros ouvrages mobiles
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Voici ma solution
    En utilisant pathlib

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    def fusion_rep(src, dst):
    	""" Deplace le contenu de la source dans la destination, La source est effacée
                    Paramètres:
                            src = source (path)
                            dst = destination (path)
            """
     
    	try:
    		liste = src.iterdir()
    		dst.name
    	except AttributeError:
    		raise ValueError("La source n'est pas du type Path")
     
    	for élém in liste:
    		sdst = dst / élém.name
    		if élém.is_dir():
    			if sdst.exists():
    				# regarde le niveau supérieur
    				fusion_rep(élém,sdst)
    			else:
    				# déplace le répertoire
    				os.renames(str(élém),str(sdst) )
     
    		else:
    			# déplace le fichier
    			os.rename(str(élém),str(sdst))
    	#supprime le répertoire vidé
    	try:
    		os.rmdir(str(src))
    	except FileNotFoundError:
    		pass

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacer un répertoire dans une autre partition
    Par michelp3 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2012, 19h32
  2. Réponses: 7
    Dernier message: 10/03/2010, 19h45
  3. [PHP 5.2] Déplacer répertoire dans un autre
    Par guigui69 dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2009, 17h19
  4. Réponses: 3
    Dernier message: 12/04/2006, 20h44
  5. Déplacer un fichier dans un autre répertoire
    Par t_om84 dans le forum Général Python
    Réponses: 2
    Dernier message: 16/05/2005, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo