Есть ли способ прочитать файл .txt и сохранить каждую строку в памяти?

Я делаю небольшую программу, которая будет читать и отображать текст из документа. У меня есть тестовый файл, который выглядит так:

12,12,12 12,31,12 1,5,3 ... 

и так далее. Теперь я хотел бы, чтобы Python читал каждую строку и сохранял ее в памяти, поэтому, когда вы выбираете отображение данных, она отображает ее в оболочке как таковую:

 1. 12,12,12 2. 12,31,12 ... 

и так далее. Как я могу это сделать?

6 Solutions collect form web for “Есть ли способ прочитать файл .txt и сохранить каждую строку в памяти?”

Я знаю, что уже ответили 🙂 Подводя итог вышесказанному:

 # It is a good idea to store the filename into a variable. # The variable can later become a function argument when the # code is converted to a function body. filename = 'data.txt' # Using the newer with construct to close the file automatically. with open(filename) as f: data = f.readlines() # Or using the older approach and closing the filea explicitly. # Here the data is re-read again, do not use both ;) f = open(filename) data = f.readlines() f.close() # The data is of the list type. The Python list type is actually # a dynamic array. The lines contain also the \n; hence the .rstrip() for n, line in enumerate(data, 1): print '{:2}.'.format(n), line.rstrip() print '-----------------' # You can later iterate through the list for other purpose, for # example to read them via the csv.reader. import csv reader = csv.reader(data) for row in reader: print row 

Он печатает на моей консоли:

  1. 12,12,12 2. 12,31,12 3. 1,5,3 ----------------- ['12', '12', '12'] ['12', '31', '12'] ['1', '5', '3'] 

Попробуйте сохранить его в массиве

 f = open( "file.txt", "r" ) a = [] for line in f: a.append(line) 

Вы также можете быть заинтересованы в модуле csv . Он позволяет анализировать, читать и записывать файлы в формате значений (csv), разделенных запятыми … которые, как представляется, находятся в вашем примере.

Пример:

 import csv reader = csv.reader( open( 'file.txt', 'rb'), delimiter=',' ) #Iterate over each row for idx,row in enumerate(reader): print "%s: %s"%(idx+1,row) 

Спасибо за превосходное решение @PePr. Кроме того, вы можете попробовать распечатать файл .txt со встроенным методом String.join(data) . Например:

 with open(filename) as f: data = f.readlines() print(''.join(data)) 
 with open('test.txt') as o: for i,t in enumerate(o.readlines(), 1): print ("%s. %s"% (i, t)) 
 #!/usr/local/bin/python t=1 with open('sample.txt') as inf: for line in inf: num = line.strip() # contains current line if num: fn = '%d.txt' %t # gives the name to files t= 1.txt,2.txt,3.txt ..... print('%d.txt Files splitted' %t) #fn = '%s.txt' %num with open(fn, 'w') as outf: outf.write('%s\n' %num) # writes current line in opened fn file t=t+1 
Python - лучший язык программирования в мире.