2014-01-21 2 views
0

Следующая функция должна печатать 200 строк, но вместо этого печатается только «[]». Я не совсем уверен, где я ошибаюсь здесь, и мне хотелось бы, чтобы новые глаза помогли мне.Почему islice печатает только []?

Спасибо!

def main(): 
from itertools import islice 
userfile = raw_input("Please enter the file you wish to open\n(must be in this directory): ") 
file1 = open(userfile, "r+") 
jcardtop = file1.read(221); 
#print jcardtop 
n = 200 
while True: 
    next_n_lines = list(islice(file1,n)) 
    if not next_n_lines: 
     break 
print next_n_lines 
+1

Вы уверены, что 'file1' имеет больше строк после того, как вы прочтете первые 221 байт? – mgilson

+0

@IanAuld: Вы действительно не должны редактировать сообщение, чтобы исправить ошибки отступа, когда проблема почти наверняка вызвана отступом ... – abarnert

ответ

2

Если ваш код на самом деле выглядит так, как вы писали:

while True: 
    next_n_lines = list(islice(file1,n)) 
    if not next_n_lines: 
     break 
print next_n_lines 

... то проблема заключается в том, что вы не print ничего, пока цикл не будет сделано, то есть вы печатать только самый последний кусочек , который по определению пуст.

Если код не выглядеть в текстовом редакторе, он может еще выглядеть, что на Python, потому что вы можете микшировать вкладки и пробелы. Попробуйте использовать лучший текстовый редактор - почти все, кроме Notepad или TextEdit, будет возможность конвертировать вкладки в пробелы или отображать вкладки. Или запустите свой скрипт с флагом -tt Python.

+0

Удивительно, что исправил это, спасибо! Я помету вас как принятый ответ за 9 минут. – Mason

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