web-dev-qa-db-fra.com

Comment lire un fichier texte dans une liste ou un tableau avec Python

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?

97
user2037744

Vous devrez diviser votre chaîne en une liste de valeurs en utilisant split()

Alors,

lines = text_file.read().split(',')
100
Achrome

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()
87
user3752281

Vous pouvez également utiliser numpy loadtxt comme

from numpy import loadtxt
lines = loadtxt("filename.dat", comments="#", delimiter=",", unpack=False)
33
Thiru

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.

3
Blairg23
with open('D:\python\positive.txt', 'r') as myfile: data=myfile.read().replace('\n', '')
0
Eshan Chattaraj

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.

0