2015-05-20 2 views
0

Если мы рассмотримРеализация Readline() в Python

f=open('foo.txt') 
x= f.readline() 
print x 

Тогда мы получим первую строку файла foo.txt.

Теперь рассмотрим:

<code> 
f=open('foo.txt') 
while (x = f.readline()) != '': # Read one line till EOF and do something 
    .... do something 
f.close() 
</code> 

Это дает синтаксическую ошибку в

x=f.readline(). 

Я относительно новым для Python, и я не могу понять эту проблему. Один встречает такого рода выражения часто в С.

Заранее спасибо

+1

В Python, поскольку присвоение не является выражением и не может использоваться в состоянии. Что именно вы хотите достичь с этим? Вы пробовали просто 'for x in f:'? –

+0

Да, я знаю о 'for x in f:', но я просто хотел посмотреть, работает ли C-подобная конструкция или нет. Выражение против назначения уточняет это. Чем ты! – DBS

ответ

1

Я думаю, вы должны ответить здесь What's perfect counterpart in Python for "while not eof"

Короче говоря, вы можете проверить, является ли по-прежнему действует на каждом цикле, как этот

линия
with open(filename,'rb') as f: 
    while True: 
     line=f.readline() 
     if not line: break 
     process(line) 

Или вы можете использовать Python встроенный в функции перебрать файл, как это

with open('file') as myFile: 
    for line in myFile: 
     do_something()