Чтение целых чисел из файла с использованием struct.unpack в Python - PullRequest
1 голос
/ 28 октября 2011

Предположим, у меня есть имя файла num.txt, как показано ниже:

1 2 3 4 5
6 7 8 9 0

Я хочу прочитать 3 integers из этого файла, то есть 1 2 3.

Я знаю, что struct.unpack может добиться цели, но я просто не могу понять это правильно. Вот как я это сделал:

fp = open('num.txt', 'rb')
print struct.unpack('iii', fp.read(12))  #right?

Кто-нибудь может мне помочь с этим?

PS

Вот так я получил файл num.txt:

fp = open('num.txt', 'wb')
fp.write('1 2 3 4 5\n6 7 8 9 0')
fp.close()

Ответы [ 2 ]

5 голосов
/ 28 октября 2011

Вы не используете struct для чтения чисел из текстового файла.Он предназначен для чтения данных из двоичного файла - где первый байт на самом деле 0x01, а не знак порядка байтов или кодированное значение символа '1'.

Вы просто хотите

three_ints = [int(x) for x in numfile.readline().strip().split(' ')[:3]]

Если вас интересуют только первые три числа, или

all_ints = [[int(x) for x in line.split()] for line in numfile]

, если вы хотите list из list с int с в каждой строке.

4 голосов
/ 28 октября 2011

struct используется для двоичных представлений чисел в стиле C.Если вместо этого у вас есть текстовые представления, вам нужно просто передать их int().

>>> [int(x) for x in '1 2 3 4 5'.split()]
[1, 2, 3, 4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...