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 fichier dans une liste


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Par défaut copie de fichier dans une liste
    Bonjour,
    j'ai une liste de nom de fichiers avec les paths complets. Ci-desous un exemple avec seulement quelques fichiers dans la liste (dans mon cas réel, il y a bien plus de fichiers!).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File_list = ['/DATA/Lines/file0398374.nc', '/DATA/Lirens3/file03988484374.nc', '/DATA/Livrens22/file0398339393374.nc', '/DATA/Litres/file03983339474.nc' ]
    Je voudrais copier ces fichiers dans un répertoire wrk_tmp en utilisant la librairie shutil donc je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shutil.copy(File_list, wrk_tmp)
    et là, une erreur : expected str, bytes or os.PathLike object, not list

    Je fais donc une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(len(File_list)):
        shutil.copy(File_list[i], wrk_tmp)
    Ca fonctionne bien mais je me dis que cette boucle va ralentir mon code et je ne trouve pas ça très élégant.

    Y a t'il un moyen plus rapide et plus élégant ?
    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    si la liste des fichiers que vous déplacez est tous simplement l'ensemble des fichiers (placé plus ou moins loin dans l'arborescence) d'un dossier précis, alors vous pouvez utiliser shutil.copytree

  3. #3
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    919
    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 : 919
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par cpalperou Voir le message
    Je fais donc une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(len(File_list)):
        shutil.copy(File_list[i], wrk_tmp)
    Ca fonctionne bien mais je me dis que cette boucle va ralentir mon code et je ne trouve pas ça très élégant.

    Y a t'il un moyen plus rapide et plus élégant ?
    Merci
    Bonjour,
    Ce n'est pas une boucle qui va plomber ton code...
    Sinon je préfère l'écriture (et le PEP aussi):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for file in File_list:
        shutil.copy(file, wrk_tmp)

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    Ce n'est pas une boucle qui va plomber ton code...
    Si le PO veut vraiment le savoir, il faut le mesurer, et ne pas se fier à son intuition.
    D'intuition j'aurais dis que boucle ou pas boucle, ce qui va brider ici c'est l'écriture sur disque, donc j'aurais tendance aussi à dire que la boucle n'a que peu d'impact sur le cout, mais bon, à vérifier.

    Citation Envoyé par Hominidé Voir le message
    Sinon je préfère l'écriture (et le PEP aussi):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in File_list:
        shutil.copy(File_list, wrk_tmp)
    Euh... édite ton code, car là ce n'est pas bon ce que tu proposes.

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

    Citation Envoyé par cpalperou Voir le message
    Y a t'il un moyen plus rapide et plus élégant ?
    Tout le problème est dans ce qui constitue la collection de fichiers à copier. Si c'était le contenu d'un répertoire, shutil.move ou shutil.copytree partiraient de la collections constituée par ce qu'il y a sur le disque...

    Pour ce qui est de la rapidité, ce sont des lectures/écriture sur disques et çà va 1000 fois moins vite que les lectures/écriture mémoire. S'il y a beaucoup de fichiers, vous pouvez essayer de paralléliser jusqu'à la saturation du disque, histoire de le faire "plus rapidement".

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

  6. #6
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    919
    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 : 919
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par lg_53 Voir le message

    Euh... édite ton code, car là ce n'est pas bon ce que tu proposes.
    Fait.

Discussions similaires

  1. Trouver un nom de fichier dans une liste
    Par tiph02 dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 06/01/2009, 19h21
  2. Copie de fichiers sur une liste de PC
    Par azerty987654 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/11/2008, 13h10
  3. Personnalisation de l'ajout d'un fichier dans une liste
    Par math1234 dans le forum SharePoint
    Réponses: 1
    Dernier message: 16/06/2008, 14h54
  4. compter fichiers dans une liste
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2007, 17h59
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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