Вы можете имитировать идиом C в Python.
Для чтения буфера до max_size
числа байтов, вы можете сделать это:
with open(filename,'rb') as f:
while True:
buf=f.read(max_size)
if not buf: break
process(buf)
Или, текстовый файл построчно:
# warning -- not idiomatic Python! See below...
with open(filename,'rb') as f:
while True:
line=f.readline()
if not line: break
process(line)
Вы должны использовать while True/break
конструкцию, так как в Python есть no eof test, кроме отсутствия байтов, возвращаемых из чтения.
В C, вы можете иметь:
while ((ch != '\n') && (ch != EOF)){
// read the next ch and add to a buffer
// ..
}
Однако, вы не можете иметь это в Python:
while(line=f.readline()):
# syntax error
потому assignments are not allowed in expressions в Python.
Это, конечно, болееидиоматическое в Python, чтобы сделать это:
# THIS IS IDIOMATIC Python. Do this:
with open('somefile') as f:
for line in f:
process(line)
Спасибо, BTW, как я могу это сделать для raw_input(), а именно ввода std. –
вы должны использовать 'sys.stdin', чтобы сделать это – jozefg
Спасибо, часть« sys.stdin »действительно помогает мне. –