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 :

Copie de dossiers avec shutil avec un fichier .txt [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut Copie de dossiers avec shutil avec un fichier .txt
    Bonjour,

    Mon but est simple, grâce à un bouton, j'aimerais qu'il ouvre un fichier .txt et qu'il prenne les valeurs de ce .txt. Ces valeurs sont un chemin source ("C:/Desktop/Public/SOURCE" par exemple) et un chemin de destination ("C:/Desktop/Public/D1"), comme ceci :

    C:/Desktop/Public/SOURCE
    C:/Desktop/Public/D1

    Il place ces valeurs dans des variables et enfin il fait une copie de dossiers. Cependant, mon raisonnement est bon, il arrive à prendre la valeur, mais il n'arrive pas à faire la copie de dossiers. De plus, aucun message d'erreur est marqué.

    Voici mon code :

    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
     
        SaveParDéf = open('SauvegardeParDéf.txt','r')
        SourceSaveParDéf = SaveParDéf.readline()
        Desti1SaveParDéf = SaveParDéf.readline()
        SaveParDéf.close()
     
        SF = str(SourceSaveParDéf)
        SD1 = str(Desti1SaveParDéf)
     
     
        Confirm = messagebox.askyesno("Confirmation", "Etes-vous sûr de copier le dossier de " + SourceSaveParDéf + " dans le dossier " + Desti1SaveParDéf + " ?")
            if Confirm == True: 
                for f in os.listdir(SF):
                     SOURCE=os.path.join(SF, f)
                     DESTI=os.path.join(SD1, f)
                     if os.path.isdir(SOURCE):
                         shutil.copytree(SOURCE, DESTI)
                     else : 
                         shutil.copy(SOURCE, DESTI)
                 messagebox.showinfo("Confirmation", "La copie de votre dossier a été faite avec succès.")
    Pourriez-vous m'aider s'il vous plait ? Merci

    Cordialement, ValerCAST

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par ValerCast Voir le message
    Pourriez-vous m'aider s'il vous plait ?
    Il faut peut être commencer par ajouter des "print" qui affichent des informations intéressantes et assurent que ce que vous pensez s'est bien déroulé. Par exemple, après la ligne 12, ajouter print ('copie confirmé') permettra de savoir si vous entrez dans la boucle de copie (pourquoi faire une boucle plutôt que de recopier les répertoires via shutil.copytree directement?).

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut
    Bonjour,

    J'avais déjà essaye ceci et les résultats me disent que le programme s'arrête une fois atteint la ligne 15.

    pourquoi faire une boucle plutôt que de recopier les répertoires via shutil.copytree directement?
    Vous dites que faire un shutil.copytree(SOURCE, DESTINATION) seul fonctionnerait aussi ?

    EDIT : le système fonctionne si je définis moi même les variables, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOURCE = " C:/Desktop/Public/SOURCE"
    Sinon ça fonctionne pas, puis je viens d'essayer sans la boucle, aucun résultat

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par ValerCast Voir le message
    Sinon ça fonctionne pas, puis je viens d'essayer sans la boucle, aucun résultat
    Pour essayer une fonction comme shutil.copytree, vous lancez la console Python et vous essayez des faire des copies.
    Une fois que vous avez vu comment çà fonctionne, vous pouvez essayer de l'intégrer dans votre code.

    Citation Envoyé par ValerCast Voir le message
    J'avais déjà essaye ceci et les résultats me disent que le programme s'arrête une fois atteint la ligne 15.
    A la ligne 15 du code que vous avez posté, on trouve DESTI=os.path.join(SD1, f).
    Si çà s'arrête là, c'est que çà plante et vous devriez avoir plusieurs lignes de message d'erreur.
    Si vous ne les obtenez pas, c'est que vous ne lancez pas votre programme depuis la ligne de commande Windows (cmd.exe).

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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pour essayer une fonction comme shutil.copytree, vous lancez la console Python et vous essayez des faire des copies.
    Une fois que vous avez vu comment çà fonctionne, vous pouvez essayer de l'intégrer dans votre code.
    En essayant shutil.copytree(SOURCE, DESTI), j'obtiens le message d'erreur suivant :

    OSError: [WinError 123] La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte: 'C:/Users/Castelli/Desktop/SOURCE\n'

    C'est bizarre car dans le fichier texte, il n'y a pas "\n" à la fin

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par ValerCast Voir le message
    C'est bizarre car dans le fichier texte, il n'y a pas "\n" à la fin
    Votre fichier contient au moins 2 lignes puisque vous effectuer 2 appels à .readline()...
    Et s'il y a des lignes, c'est qu'il y a des fins de lignes...

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

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

Discussions similaires

  1. créer un dossier et y ouvrir un fichier txt
    Par philippe63000 dans le forum C++
    Réponses: 9
    Dernier message: 23/05/2013, 13h34
  2. Réponses: 4
    Dernier message: 30/04/2010, 11h11
  3. lire avec fileget sur un fichier txt
    Par dexter2 dans le forum VB.NET
    Réponses: 0
    Dernier message: 04/11/2009, 14h21
  4. suppression de dossiers avec fichier txt en paramètre
    Par sparowme dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 29/10/2008, 11h31
  5. [GUI]Ouvrir dossier et interragir avec fichiers
    Par nanath02 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/02/2008, 12h10

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