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 :

AIDE MOI [Copier des fichiers dans un répertoire ayant des extensions spécifiques] [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    novembre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2022
    Messages : 7
    Points : 5
    Points
    5
    Par défaut AIDE MOI [Copier des fichiers dans un répertoire ayant des extensions spécifiques]
    J'ai besoin de Copier des fichiers dans un répertoire A ayant des extensions spécifiques vers un autre répertoire B
    Mon script ça ne marche pas au niveau extensions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from pathlib import Path
    import os
    import shutil
     
    src = '/Users/Administrator/Desktop/A'
    dst = '/Users/Administrator/Desktop/B'
     
    files=os.listdir(src)
     
    for fname in files:
        if os.path.exists(dst) or files.endswitch(".txt") (dst) :
            shutil.copy2(os.path.join(src,fname), dst)

  2. #2
    Membre expert Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2013
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2013
    Messages : 1 519
    Points : 3 282
    Points
    3 282
    Par défaut
    bonjour

    original , une personne qui demande de l'aide ici

    Ta ligne 11 est plus que "particulière"

    - pourquoi ne pas tester une seule fois si la destination existe, mais pourquoi pas si la destination disparait en cours d'exécution...
    - pas compris ce que tu comptes faire avec ton or. "or" veut dire "ou" en français.
    - ne teste même pas l'extension du fichier mais d'une liste
    - encore moins compris ton dernier bloc (dst) à la fin de cette ligne


    ----------
    Note: existe glob en python
    $moi= ( !== ) ? : ;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    novembre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2022
    Messages : 7
    Points : 5
    Points
    5
    Par défaut import glob
    Bonjour,

    j'ai essayé, mais ça marche pas



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from pathlib import Path
    import glob
    import os
    import shutil
     
    src = '/Users/Administrator/Desktop/A'
    dst = '/Users/Administrator/Desktop/B'
     
    files =os.listdir(dst)
    files =glob.iglob(os.path.join(src, ".txt"))
     
    for fname in files:
        if os.path.exists(dst) and os.path.isfile(files): 
            shutil.copy2(os.path.join(src,fname), dst)

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    4 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 4 306
    Points : 9 004
    Points
    9 004
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Plusieurs remarques concernant ton code.

    - l'appel à files=os.listdir(dst) est inutile puisque files est affecté par iglob tout de suite après

    - iglob renvoie des adresses complètes et pas seulement le nom des fichiers. Il te suffisait d'un "print(files)" pour le voir.

    - iglob demande un motif wildcard valable pour ta recherche: "*.txt" et non ".txt"

    - tester si le répertoire destination existe pour chacun des fichiers n'est pas logique: il ne faut le faire qu'une seule fois avant la copie. Tu pourrais aussi décider de créer le répertoire s'il n'existe pas.

    - ce n'est pas utile de lire tous les fichiers de la source avant d'être sûr que le répertoire destination existe.

    - on peut se passer de créer la variable "files".

    - tu importes pathlib sans l'utiliser

    Voilà ton code corrigé (à ma sauce):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import glob
    import os
    import shutil
     
    src = '/Users/Administrator/Desktop/A'
    dst = '/Users/Administrator/Desktop/B'
     
    if os.path.exists(dst):
        for file in glob.iglob(os.path.join(src, "*.txt")):
            if os.path.isfile(file): 
                shutil.copy2(file, dst)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre éprouvé
    Avatar de Hominidé
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    juin 2018
    Messages
    743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : juin 2018
    Messages : 743
    Points : 1 282
    Points
    1 282
    Billets dans le blog
    3
    Par défaut
    Bonjour,
    avec pathlib:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from pathlib import Path
    import shutil
     
    src = '/Users/Administrator/Desktop/A'
    dst = '/Users/Administrator/Desktop/B'
    path = Path(scr)
    for file in path.glob('*.txt'):
        shutil.copy2(file, dst)
    pathlib, poetry, importlib_ressources...

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    novembre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2022
    Messages : 7
    Points : 5
    Points
    5
    Par défaut c'est Bon
    Merci de m'avoir aidé et conseillé.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/10/2015, 16h09
  2. copier un fichier dans un répertoire différents
    Par THIB46 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 11/06/2015, 12h07
  3. [Batch] Copier X Fichiers dans différents répertoires
    Par bixouille dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 12/05/2015, 19h56
  4. Copier un fichier dans un répertoire?
    Par jbjweb dans le forum C
    Réponses: 5
    Dernier message: 05/09/2006, 16h34
  5. Copier un fichier dans un répertoire
    Par soft damsel dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2006, 17h02

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