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

Réseau/Web Python Discussion :

Script python pour tri de fichiers


Sujet :

Réseau/Web Python

  1. #21
    Membre habitué
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Points : 138
    Points
    138
    Par défaut
    Non, dans le poste en question tu testes si le chemin "'www/boite_noire/'+m.group(0)" est un dossier, sinon tu le moves.

    En aucun cas tu ne testes l’existence du fichier (Puisque pour arriver au shutil.move(), il faut que le chemin soit un chemin de fichier), je te laisse aller regarder les docs que je t'ai donner dans mon premier post pour savoir comment tester l’existence d'un fichier.

  2. #22
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    Ah j'ai compris pourquoi ça plante:
    Vu que ma machine va envoyer plusieurs fois un fichier texte qui a le même nom a chaque fois (test1.txt) ça plante. Ducoup faut peut être que je rename le fichier ?

  3. #23
    Membre habitué
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Points : 138
    Points
    138
    Par défaut
    Pourquoi veux-tu rename le fichier?

    Soit ton fichier test1.txt n'est jamais modifier, auquel cas tu testes l'existence de ce fichier, si il existe, bah tu ne fais rien et si il n'existe pas tu fait ton shutil.move().

    Soit ton fichier peut-être modifier par rapport à sa précédente copie, du coup tu testes l'existance du fichier et si il existe tu le supprimes avant de faire ton shutil.move().

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    Oui mais moi je veux pas le supprimé justement je veux dans mon dossier test1 tous les fichiers test1.txt mais il a pas l'air de vouloir vu qu'ils ont le même nom ducoup j'essaye ça:
    Nom : Capture.PNG
Affichages : 686
Taille : 18,3 Ko
    Pour que mes fichiers n'ai pas le même nom (mon maître de stage veut que je lui rajoute la date donc ça tombe bien) mais il rename avant d'envoyer le fichier dans le répertoire alors que la ligne de code est avant u_u

  5. #25
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    Existe t-il un moyen de déiiter la fonction os.walk ? Car je ne veut pas qu'il parcours les fichiers dans les répertoires .

  6. #26
    Membre habitué
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Points : 138
    Points
    138
    Par défaut
    Bah en fait non, puisque de base tu ne sais pas quel fichier tu vas devoir bouger, faut bien parcourir le répertoire pour savoir quels fichiers tu vas avoir besoin de bouger.

    Après tu peux très bien faire un os.walk(), stocker ce qui t’intéresses dans une variable (Liste, dictionnaire, ...) et faire un traitement sur cette variable après.

  7. #27
    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 Scott06 Voir le message
    Existe t-il un moyen de déiiter la fonction os.walk ? Car je ne veut pas qu'il parcours les fichiers dans les répertoires .
    os.walk, c'est pour parcourir les arborescences. Pour récupérer les fichiers d'un répertoire, os.listdir (ou os.scandir) suffit.

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

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    Ducoup j'ai écrit ça avec os.listdir:
    Nom : Capture3.PNG
Affichages : 393
Taille : 15,8 Ko

    Au départ j'ai mon dossier comme ça:
    Nom : Capture.PNG
Affichages : 379
Taille : 5,2 Ko

    Quand j'éxecute, l'erreur vient du dossier helloworld donc on peut l'ignorer ?
    Nom : Capture2.PNG
Affichages : 395
Taille : 11,6 Ko

    Apres execution j'obtient bien ce que je veux:
    Nom : Capture4.PNG
Affichages : 390
Taille : 5,8 Ko

    Avec les fichiers renommés et dataient:
    Nom : Capture5.PNG
Affichages : 382
Taille : 2,7 Ko

    Mais quand je rajoute un fichier nommés comme précedemment:
    Nom : Capture6.PNG
Affichages : 382
Taille : 6,6 Ko

    J'obtient ça:
    Nom : Capture7.PNG
Affichages : 385
Taille : 2,8 Ko

    Je comprend pas pourquoi le fichier test1.txt est pas traité et pourquoi mon test2 disparaît il ne se range pas dans son répertoire.

    Vraiment besoin d'aide la svp

  9. #29
    Membre habitué
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Points : 138
    Points
    138
    Par défaut
    Le mieux je pense c'est que tu reprennes l'algo sur papier pour remettre à plat ce que tu veux vraiment, parce que là je pense que ton script ne fait pas du tout ce que tu souhaites.

    En gros tu listes tout ce qu'il y a dans 'www/boite_noire', pour chaque chemin présent dans ton répertoire, si ce n'est pas un dossier tu crées le dossier dossier, sans tester avant si le dossier existe déjà d'ailleurs. Ensuite tu déplaces le fichier .txt dans le répertoire créé précédemment et enfin tu renomme ce fichier .txt avec la date, et tu vires l'extension au passage.

    L'erreur que t'as montrer c'est juste que ton fichier helloworld.txt existe déjà dans le dossier helloworld, il n'a pas été renommé. Et je pense que test1.txt n'est pas pris en compte car ton script plante en permanence avant d'arriver dessus, c'est la seule explication logique que je vois là.

    Edit : Et pour ce qui est du code et des tracebacks, utilises la fonction code présent dans l'éditeur de message du site, c'est beaucoup plus pratique que des screens.

  10. #30
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Le problème saute aux yeux, tu nommes ton fichier du même nom que ton répertoire, de plus avec shutil.move, tu peux directement mettre la bonne destination directement.

    Et encore de plus, un programme va très vite à s'exécuter, donc ton système de renommage n'est pas bon avec la date, utilise un timestamp (time.time()). pour préfixer tes noms de fichiers.
    Le temps ronge l'amour comme l'acide.

  11. #31
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    Où est le problème de nommer un répertoire comme son fichier ?

  12. #32
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Tu écrases ton répertoire par ton fichier, et tu ne vois pas le problème ?

    Et sur linux, tout est fichier.
    Le temps ronge l'amour comme l'acide.

  13. #33
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    J'écrase mon répertoire par mon fichier ?????? Pourquoi mon fichier ce retrouve dans mon répertoire alors ? je prend juste le nom de mon fichier pour créer un répertoire je l'écrase pas ?

  14. #34
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Tu dis qu'il y a disparition de fichiers, c'est donc soit tu les supprimes, soit tu les écrases par quelque chose.

    Et tes images n'aident pas, poste du code, pas des images.

    Pourtant pas difficile.

    Un exemple fait rapidos.

    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
    import os
    import shutil
    import time
     
    source = './sources/'
    dest = './dest/'
     
    fichiers = os.listdir(source)
     
    for f in fichiers :
        rep = f.split('.')[0]
        if not os.path.isdir(dest + rep) :
            os.mkdir(dest + rep)
        shutil.move(source + f, '{dest}{rep}/{timestamp}-{fichier}'.format(dest=dest,
                                                                            rep=rep,
                                                                            timestamp=time.time(),
                                                                            fichier=f))
    Le temps ronge l'amour comme l'acide.

  15. #35
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    J'ai pas de chemin de destination parce qu'il change en fonction des fichiers que je lis

  16. #36
    Membre habitué
    Homme Profil pro
    Développeur backend (python)
    Inscrit en
    Mai 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur backend (python)

    Informations forums :
    Inscription : Mai 2014
    Messages : 77
    Points : 138
    Points
    138
    Par défaut
    Suffit de remplacer la variable dest par un chemin que tu créés dans ta boucle, il faut que tu réussisses à t’approprier le code que t'as fourni bistouille avec les besoins que tu as. Le code qu'il t'as fourni est un exemple sans plus.

  17. #37
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 47
    Points : 8
    Points
    8
    Par défaut
    Bon j'ai réussi à faire le script si qqun le veut !
    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
    #!/usr/bin/python
    # -*- coding:Utf-8 -*-
    import os
    import time
     
    d = 'path'
     
    date = time.strftime('%Y_%m_%d_%H_%M_%S')
    filesAll = os.listdir(d)
    filesValid= [i for i in filesAll if i[-4:]=='.txt']
     
    for f in filesValid:
     
        newName = f[:-4]+'_'+date+'.txt'
        try:
            os.mkdir('{0}/{1}'.format(d, f[:-4]))
        except:
            print 'Directory {0}/{1} already exists'.format(d, f[:-4])
        os.system('mv {0}/{1} {0}/{2}/{3}'.format(d, f, f[:-4], newName))

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. script shell pour renommer un fichier
    Par wang_xue dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 15/11/2007, 15h45
  2. [Cherche tuto/cours]Script Python pour Unix
    Par elflamby dans le forum Général Python
    Réponses: 2
    Dernier message: 05/09/2007, 14h38
  3. [MySQL] Script PHP pour générer un fichier xml
    Par totofe49 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/05/2007, 15h12
  4. Recherche d'un script PHP pour renommer des fichiers en masse
    Par pekka77 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 19/11/2006, 23h43
  5. Script shell pour modifier plusieurs fichiers
    Par julio_097 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 03/10/2006, 12h41

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