Pythonic способ итерации по файлу и преобразования в int:
for line in open(fname):
if line.strip(): # line contains eol character(s)
n = int(line) # assuming single integer on each line
То, что вы пытаетесь сделать, немного сложнее, но все же не так просто:
h = open(fname)
for line in h:
if line.strip():
[int(next(h).strip()) for _ in range(4)] # list of integers
Таким образом, он обрабатывает 5 строк одновременно. Используйте h.next()
вместо next(h)
до Python 2.6.
Причина, по которой вы получили ValueError
, заключается в том, что int
не может преобразовать пустую строку в целое число. В этом случае вам нужно либо проверить содержимое строки перед преобразованием, либо исключить ошибку:
try:
int('')
except ValueError:
pass # or whatever