Récupérer des données d'un fichier texte

Résolu/Fermé
tho - 8 juil. 2019 à 10:06
Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 - 12 juil. 2019 à 14:51
Bonjour,

Je souhaite réaliser un script python me permettant de récupérer les données lignes par lignes d'un tableau (fichier .txt) afin de les traiter et de les écrire dans un nouveau fichier txt.

Le tableau est simple (environ 3 colonnes) et je cherche à récupérer chaque lignes afin de faire la moyenne des 3 valeurs et d'en suite écrire le résultat dans un nouveau tableau (à une seule colonne)

Je cherche comment arriver a récupérer ces valeurs la..

Merci


Configuration: Windows / Chrome 75.0.3770.100

1 réponse

Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
8 juil. 2019 à 12:07
Il faut ouvrir le fichier puis le lire. Pour ça :
# On ouvre le fichier en mode 'read' :
fichier = open("emplacement/du/fichier.txt", 'r')
# On lis le fichier :
contenu_du_fichier = fichier.readlines()


et toute tes valeurs se trouveront dans la valeur "contenu_du_fichier".

Bonne journée !
3
Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
8 juil. 2019 à 12:45
"contenu_du_fichier" est une liste de ligne.
Donc la ligne n°2 s'obtient directement en faisant :
ligne_deux = contenu_du_fichier[1]
1
Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
11 juil. 2019 à 16:46
Après réflexion, il me semble que de faire passer la deuxième colonne en première puis de trier avec la fonction sort() puis de la remettre en deuxième est la solution la plus simple.

Ça donne après avoir récupéré la liste des lignes avec readlines() :

#On découpe chaque ligne pour obtenir par exemple : ["description", 0, 1]
Ligne_coupe_en_colonne  = []
for ligne in liste_des_lignes :
    #On coupe la ligne pour en faire une liste
    ligne_coupe = ligne.split("\t")
    #On ajoute la ligne coupé en liste à la liste des lignes (donc "Ligne_coupe_en_colonne" est une liste de liste)
    Ligne_coupe_en_colonne.append(ligne_coupe)

#On fait passer la deuxième colonne au début, pour obtenir : [0, 1, "description"]
colonne_deux_au_debut = []
for i in Ligne_coupe_en_colonne :
    #Chaque ligne fait passer la 2ème valeur de la liste à la première place
    nouvel_ordre = [i[1],i[2],i[0]]
    # On l'ajoute à la liste
    colonne_deux_au_debut.append(nouvel_ordre)

#On trie la liste de toute les lignes.
colonne_deux_au_debut = colonne_deux_au_debut.sort()

#On refait passer la deuxième colonne au milieux pour retrouver cette forme : "description\t0\t1"
liste_triees = []
for i in colonne_deux_au_debut :
    ligne_reforme = str(i[2]) + "\t" + str(i[0]) + "\t" + str(i[1])
    #On ajoute à la liste, on peut aussi l'écrire dans le fichier c directement !
    liste_triees.append(ligne_reforme)


Je ne sais pas si c'est la solution la plus simple. Elle est quand même un peu longue je trouve... Mais ça doit marcher dans tous les cas possible.
1