2 votes

Comment lire un tableau de liste d'entiers stocké dans un fichier texte en Python ?

J'ai écrit un fichier texte qui contient une liste d'entiers comme ci-dessous

cords = [[385, 24], [695, 32], [1010, 106], [1122, 245]]
f = open('ref_points.txt', 'w')
f.write(str(cords))
f.close()

Je veux relire ce fichier texte et obtenir la liste des entiers. Je sais que lorsque nous lisons le contenu, il s'agit d'une chaîne de caractères, et qu'il faut la traiter pour la stocker dans la liste. J'aimerais savoir s'il existe un moyen plus efficace de le faire.

Gracias

1voto

Ontropy Points 66

Vous pouvez utiliser le module pickle et stocker les données sous forme de données binaires, de cette façon vous n'avez pas à effectuer de conversions de type. pickle est déjà fourni avec python, vous n'avez donc rien à installer non plus.

import pickle
coords = [[385, 24], [695, 32], [1010, 106], [1122, 245]]
f = open("points.bin", "wb")
pickle.dump(coords, f);
f.close();

# you can read it like this
f = open("points.bin", "wb")
coords = pickle.load(f) # here coords is a list so you do not have to convert anything
f.close()

également comme @Marcin_Orlowski l'a mentionné dans les commentaires, une meilleure façon d'ouvrir les fichiers sera de le faire :

with open("somefile.txt") as f:
    # now you can use f for the file

de cette façon, vous ne devez pas non plus appeler f.close().

0voto

NiiRexo Points 26

Vous pouvez utiliser le module pickle pour sécuriser les objets de classe. Convertissez vos données en objets et mettez tous vos objets dans un objet porteur, puis sécurisez cet objet avec pickle.

exemple :

import pickle

class Cords:
    def __init__(self, x, y)
        self.x = x
        self.y = y

class Data():
    def __init__(self, list)
        self.list = list

cord1 = Cords(385, 24)
cord2 = Cords(695, 32)

list_of_data = []
list_of_data.append(cord1, cord2)

data = Data(list_of_data)

pickle.dump(data, open("path/dataname.data", "wb"))    #saves the data
loaded_data = pickle.load(open("path/dataname.data", "rb"))    #loads data

la fin pourrait être tout .data .src .everything

wb = write binary rb = lecture binaire

L'utilisation d'attributs de classe offre de nombreux avantages pour l'accès et le traitement ultérieur de vos cordons. Et le fait que l'objet chargé existe déjà en tant qu'objet de classe rend obsolète toute conversion car il est déjà sous une forme accessible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X