2013-12-03 12 views
0

У меня есть файл python со списком в нем.Python: как читать список из текстового файла

localhost tmp]$ cat 1.txt 
['aaaaaaa','bbbbbbb','cccccc','dddddddd'] 

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

#!/usr/bin/python 
def get_vminfo(vms): 
    for vm in vms: 
     print vm 

#vms=['aaaaaaa','bbbbbbb','cccccc','dddddddd'] 
with open('1.txt','r') as input: 
    vms=input.read() 

get_vminfo(vms)  

Как распечатать каждое значение списка ???

+0

Вы видели это [ответ] (http://stackoverflow.com/a/17225333/1234279) с pickle – Pippin

ответ

1

Использование ast.literal_eval:

>>> import ast 
>>> with open('1.txt') as f: 
...  ast.literal_eval(f.read()) 
... 
['aaaaaaa', 'bbbbbbb', 'cccccc', 'dddddddd'] 

>>> with open('1.txt') as f: 
...  for x in ast.literal_eval(f.read()): 
...   print x 
... 
aaaaaaa 
bbbbbbb 
cccccc 
dddddddd 
+0

Получил это, спасибо. – user3059831

0

Это работает для файлов меньшего размера. Имейте в виду, что данные хранятся в памяти вашего компьютера, поскольку он создает массив данных, поэтому, если вы имеете дело с большими файлами, лучше использовать итераторы вместо этого.

К сожалению, в итераторах вы не можете получить доступ к уже прочитанным данным.

+0

Есть ли ответ на вопрос здесь? – mhatch

Смежные вопросы