2013-03-23 3 views
0

Я работаю с Python 3.3 с помощью PyDev для Eclipse, Хорошо, так что это мой код:Python 3.3 readlines усечения текстового файла

countdata = open(countfilename, 'r') 
countlist = countdata.readlines() 
print(len(countlist)) 
genecountline = wordlist(countlist[-1]) 
print(genecountline) 

countfilename относится к довольно длинному текстовому файлу 7847 строк, который генерируется из текстовый файл с использованием сценария, предоставленного мне инструктором в классе машинного обучения (мне пришлось преобразовать указанный скрипт в Python 3 с использованием 2to3).

wordlist - простая функция, которую я построил, которая берет строку текста и возвращает слова в ней в виде списка.

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

countdata = open(countfilename, 'r') 
countlist = [] 
for line in countdata: 
    countlist.append(line) 

не имеет значения. Так или иначе, print(len(countlist)) дает мне приблизительно 7630, я говорю примерно потому, что иногда это 7628 или выше, чем 7633. Конкретная строка, возвращаемая countlist[-1], всегда отличается (файл построен с использованием объекта-генератора, так как мой инструктор построил этот скрипт, и я не совсем уверен, как именно он работает).

genecountline = wordlist(countlist[-1]) 
print(genecountline) 

Я поставил, чтобы посмотреть, что думает python, последняя строка файла. И когда я открываю файл в текстовой панели, возвращаемая строка на самом деле является номером строки, возвращаемым len(countlist). Другими словами, он, кажется, игнорирует последнее приближение. 210 строк моего файла. Поэтому мой вопрос заключается в том, как я могу это исправить, и как я могу предотвратить повторение этого?

+0

, добавляя код для 'wordlist()' может помочь решить проблему – MattDMo

ответ

1

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

Вы должны написать код, генерирующий файл.

+0

действительно, я забыл закрыть файл после его написания! Я, должно быть, провел 4 часа сегодня, пытаясь решить эту проблему, спасибо. – whiplashomega