Чтение одного целого числа за один раз с помощью python
Как я могу прочитать int из файла? У меня есть большой (512 МБ) txt-файл, который содержит целочисленные данные в виде:
0 0 0 10 5 0 0 140
0 20 6 0 9 5 0 0
Теперь, если я использую c = file.read(1), я получаю только один символ за раз, но мне нужно одно целое число за раз. Например:
c = 0
c = 10
c = 5
c = 140 and so on...
Любое великое сердце, пожалуйста, помогите. Заранее спасибо.
3 ответа:
Вот один из способов:
with open('in.txt', 'r') as f: for line in f: for s in line.split(' '): num = int(s) print numДелая
Затем вы разбиваете каждую строку на пробелы и читаете каждое число по ходу.for line in f, Вы читаете бит за битом (не используя ниread() all, ниreadlines). Важно, потому что ваш файл большой.Вы можете сделать больше проверки ошибок, чем этот простой пример, который будет блевать, если файл содержит поврежденные данные.
Как говорится в комментариях, этого должно быть достаточно для вас - в противном случае, если это возможно, ваш файл может иметь очень длинные строки, которые вы можете сделать что-то более сложное, как чтение блоков за раз.
512 Мб на самом деле не так уж и много. Если вы все равно собираетесь создать список данных, я не вижу проблем с выполнением шага чтения за один раз:
my_int_list = [int(v) for v in open('myfile.txt').read().split()]Если вы можете структурировать свой код так, что вам не нужен весь список в памяти, было бы лучше использовать генератор:
def my_ints(fname): for line in open(fname): for val in line.split(): yield int(val)И затем использовать его:
for c in my_ints('myfile.txt'): # do something with c (which is the next int)