2008-11-29 3 views
26

Я пытаюсь открыть файл и создать список с каждой строкой, считанной из файла.Создайте список, содержащий каждую строку файла

i=0 
    List=[""] 
    for Line in inFile: 
     List[i]=Line.split(",") 
     i+=1 
    print List 

Но этот пример кода дает мне ошибку из-за i+=1 говоря, что index is out of range. В чем моя проблема? Как я могу написать код, чтобы увеличить свой список с каждой новой линией в InFile?

ответ

58

Это намного проще, чем это:

List = open("filename.txt").readlines() 

Это возвращает список каждой строки в файле.

+0

Wooow Просто отлично! Это сработало. Btw представьте, что это не файл ... Но я создаю динамический список ... Как добавить элемент на нем? вроде if был arrayList? так много – UcanDoIt 2008-11-29 22:06:41

+0

Метод append сделает трюк. Например: xs.append (строка) – 2008-11-29 23:06:29

+2

Как насчет закрытия файла? – matlabit 2015-11-25 13:44:28

-5

Я не уверен в Python, но большинство языков имеют функцию push/append для массивов.

8
my_list = [line.split(',') for line in open("filename.txt")] 
1

Файл является почти список строк. Вы можете тривиально использовать его в цикле для цикла.

myFile= open("SomeFile.txt", "r") 
for x in myFile: 
    print x 
myFile.close() 

Или, если вам нужен фактический список строк, просто создайте список из файла.

myFile= open("SomeFile.txt", "r") 
myLines = list(myFile) 
myFile.close() 
print len(myLines), myLines 

Вы не можете сделать someList[i] поставить новый элемент в конец списка. Вы должны сделать someList.append(i).

Кроме того, никогда не не запускает простую переменную с заглавной буквой. List смущает людей, которые знают Python.

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

1

f.readlines() возвращает список, содержащий каждую строку как элемент в списке

если вы хотите eachline быть разделены («»), вы можете использовать списковых

[ list.split(",") for line in file ] 
7

Пожалуйста, прочитайте PEP8. Вы покачиваетесь довольно далеко от конвенций python.

Если вы хотите получить список списков каждой строки расщепляется запятой, я бы это сделать:

l = [] 
for line in in_file: 
    l.append(line.split(',')) 

Вы получите перевод строки на каждой записи. Если вы не хотите, чтобы:

l = [] 
for line in in_file: 
    l.append(line.rstrip().split(',')) 
22

Я сделал это таким образом

lines_list = open('file.txt').read().splitlines() 

Каждая линия имеет свой конец строки символов (\ п \ г); таким образом, символы удаляются.

0

Предполагая, что вы также хотите, чтобы лишить пробелы в начале и в конце каждой строки, вы можете отобразить функцию строки полосы в список возвращенного readlines:

map(str.strip, open('filename').readlines()) 
Смежные вопросы