J'essaie de lire les lignes d'un fichier texte dans une liste ou un tableau en python. J'ai juste besoin de pouvoir accéder individuellement à n'importe quel élément de la liste ou du tableau après sa création.
Le fichier texte est formaté comme suit:
0,0,200,0,53,1,0,255,...,0.
Là où le ...
est en haut, le fichier texte actuel contient des centaines, voire des milliers d’éléments.
J'utilise le code suivant pour essayer de lire le fichier dans une liste:
text_file = open("filename.dat", "r")
lines = text_file.readlines()
print lines
print len(lines)
text_file.close()
Le résultat obtenu est:
['0,0,200,0,53,1,0,255,...,0.']
1
Apparemment, il lit l'ensemble du fichier dans une liste d'un seul élément, plutôt que dans une liste d'éléments individuels. Qu'est-ce que je fais mal?
Vous devrez diviser votre chaîne en une liste de valeurs en utilisant split()
Alors,
lines = text_file.read().split(',')
La méthode file.readLines () de python retourne une liste des lignes du fichier:
f = open('file_name.ext', 'r')
x = f.readlines()
f.close()
Vous devriez maintenant pouvoir parcourir le tableau de lignes x.
Si vous souhaitez utiliser le fichier sans avoir à vous rappeler de le fermer par la suite, procédez comme suit:
with open('file_name.ext', 'r') as f:
x = f.readlines()
Vous pouvez également utiliser numpy loadtxt comme
from numpy import loadtxt
lines = loadtxt("filename.dat", comments="#", delimiter=",", unpack=False)
Cette question demande comment lire le contenu de la valeur séparée par des virgules d'un fichier dans une liste itérable:
0,0,200,0,53,1,0,255,...,0.
Le moyen le plus simple de procéder consiste à utiliser le module csv
comme suit:
import csv
with open('filename.dat', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
Maintenant, vous pouvez facilement parcourir spamreader
comme ceci:
for row in spamreader:
print(', '.join(row))
Voir documentation pour plus d'exemples.
with open('D:\python\positive.txt', 'r') as myfile: data=myfile.read().replace('\n', '')
Si votre fichier contient des valeurs numériques, la méthode loadtxt
de numpy semble être la meilleure approche. Vous pouvez lire le tableau comme suit:
import numpy as np
filename = '../data/NLPR_MCT/db3/cam1.dat'
x = np.loadtxt(filename, delimiter=',')
print (x)
Vous pouvez indexer les valeurs sous forme de tableau dans x et file.readlines () n'est pas pratique car il insère '\ n' dans chaque ligne et l'indexation peut devenir erronée.