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écouper un fichier .txt - Ouvrir le dernier .txt créé [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Par défaut Découper un fichier .txt - Ouvrir le dernier .txt créé
    Bonjour à tous !

    Ca fait un moment que j'utilise Python pour répondre à mes besoins mais je n'en reste pas moins assez médiocre. J'ai finalement décidé de venir vous demander un petit coup de main parceque la ça fait un moment que je bute et il faut que j'avance un peu.

    Je vous explique mon problème.

    J'ai un fichier .txt contenant des mesures et à la suite de ces mesures l'année, le mois, le jour, l'heure, la minute et la seconde à laquelle la mesure a été prise. Voici les premières lignes pour que vous compreniez :
    1;101.8183;98.534;7.2393;2016; 03; 22; 17; 55; 04
    1;301.8175;301.4767;7.2393;2016; 03; 22; 17; 55; 26
    2;286.6108;98.188;5.1269;2016; 03; 22; 17; 55; 47
    2;86.6099;301.8215;5.1266;2016; 03; 22; 17; 56; 08
    3;116.2481;99.8247;51.7612;2016; 03; 22; 17; 56; 29
    3;316.2474;300.1744;51.761;2016; 03; 22; 17; 56; 52
    1;101.8188;98.534;7.2392;2016; 03; 22; 18; 00; 07
    1;301.8173;301.4768;7.2394;2016; 03; 22; 18; 00; 29
    2;286.6112;98.188;5.1268;2016; 03; 22; 18; 00; 52
    2;86.6095;301.8217;5.1266;2016; 03; 22; 18; 01; 15
    3;116.2484;99.824;51.7612;2016; 03; 22; 18; 01; 36
    3;316.2479;300.1755;51.761;2016; 03; 22; 18; 01; 59
    1;101.8182;98.5329;7.2393;2016; 03; 22; 18; 05; 06
    ...
    Mon objectif est de découper ce fichier en plusieurs par tranche de x minutes : le code regarde à quelle heure la première mesure a été faite, écrit cette ligne et les 5 suivantes dans un fichier .txt puis il regarde l'heure de la mesure à la ligne d'indice 5, si cette mesure a été faite après plus de x minutes il crée un nouveau fichier .txt contenant cette mesure et les 5 suivantes sinon il complète le dernier fichier créé et ainsi de suite.
    Alors comme je suis assez naze en Python (enfin en programmation tout court, j'ai pas la logique) j'ai fait un code assez basique. D'abord je définis une fonction doy_h : elle calcule le jour Julien (numéro du jour de l'année) auquel j'ajoute l'heure décimal : heure /24 + minute / 60 /24 + secondes / 3600 /24. C'est ce qui me sert de repère.
    J'arrive à créer un premier fichier .txt, puis à le compléter avec les données suivantes le problème c'est qu'au bout d'un moment ça plante parceque j'utilise une vilaine magouille pour ouvrir le dernier .txt créé, j'utilise des indices. Enfin le mieux c'est que je vous montre 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    import numpy as np
    import datetime
     
    mesures_tache = 'C:/Desktop/Decoupage des donnees/mesures_tache/TEST0820.16m'
     
        # Fonction doy_h
     
    def doy_h_f(annee,mois,jour,heure,minute,seconde) :
        heure_deci = heure/24 + (minute/60)/24 + (seconde/3600)/24
        doy_h = int(datetime.datetime.strptime(str(annee + ' ' + mois + ' ' + jour), '%Y %m %d').timetuple().tm_yday) + heure_deci
        return doy_h
     
        # Fonction de découpage
     
    def decoupage(mesures_tache):
        intervalle = int(input("Quelle est l'intervalle de découpage des données souhaitées (en minutes) ? "))
        intervalle_d = (intervalle/60)/24
        nbr_pts = int(input("Quel est le nombre de points mesurés ? "))
        with open(mesures_tache, 'r') as f :
            for ligne in f :
                ligne = f.readlines()
                i = 0
                ligne_init = ligne[0].split(";")
                doy_init_h = doy_h_f(str(int(ligne_init[4])),str(int(ligne_init[5])),str(int(ligne_init[6])),int((ligne_init[7])),int((ligne_init[8])),int((ligne_init[9])))
     
            while i < len (ligne) :
                ligne_1 = ligne[i].split(";")
                doy_h = doy_h_f(str(int(ligne_1[4])),str(int(ligne_1[5])),str(int(ligne_1[6])),int((ligne_1[7])),int((ligne_1[8])),int((ligne_1[9])))
     
                NomFichier = "donnees_tache_" + str(i) + ".txt"
                Fichier = open(NomFichier,'w')
                Fichier.close()
     
                if doy_h - doy_init_h > intervalle_d :
     
                    NomFichier = "donnees_tache_" + str(i) + ".txt"
                    Fichier = open(NomFichier,'w')
                    Fichier.write(ligne[i]+'\n'+ligne[i+1]+'\n'+ligne[i+2]+'\n'+ligne[i+3]+'\n'+ligne[i+4]+'\n'+ligne[i+5]+'\n')
                    Fichier.close()
                    doy_init_h = doy_h
     
                else :
                    i=i-nbr_pts*2
                    if i < 0 :
                        i=0
                        Fichier = open("donnees_tache_" + str(i)+ ".txt",'a')
                        Fichier.write(ligne[i]+'\n'+ligne[i+1]+'\n'+ligne[i+2]+'\n'+ligne[i+3]+'\n'+ligne[i+4]+'\n'+ligne[i+5]+'\n')
                        Fichier.close()
     
                    else :
                        i=i
                        Fichier = open("donnees_tache_" + str(i) + ".txt",'a')
                        i+= nbr_pts*2
                        Fichier.write(ligne[i]+'\n'+ligne[i+1]+'\n'+ligne[i+2]+'\n'+ligne[i+3]+'\n'+ligne[i+4]+'\n'+ligne[i+5]+'\n')
                        Fichier.close()
     
                i+= nbr_pts*2
    En fait, je pense que j'arriverai à m'en sortir si je trouvais une façon simple d'ouvrir le dernier fichier créé.
    Quelqu'un aurait une idée ?
    Si je n'ai pas été clair, n'hésitez pas à me le dire, ça fait un moment que je bloque sur ce code Et désolé pour ma programmation qui doit paraître bien archaïque à certains

    D'avance, merci !

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Par défaut
    En fait j'ai réussi, il suffisait que je me serve du doy comme "variable" pour le titre, je suis décidément bien mauvais en progra.

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

Discussions similaires

  1. Ouvrir le dernier fichier Excel enregistré
    Par GalJin dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 30/11/2007, 15h34
  2. [DOM XML] Ecrire dans un fichier XML comme dans un TXT
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 23/09/2007, 22h55
  3. Ouvrir le dernier fichier cree ?
    Par M4tthieu dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/06/2007, 19h27
  4. Conversion de fichier au format idx en txt
    Par mokhrim dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 05/12/2006, 23h35
  5. Réponses: 16
    Dernier message: 03/04/2006, 17h24

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