在Python中使用struct.unpack从文件中读取整数

1 投票
2 回答
1004 浏览
提问于 2025-04-17 05:09

假设我有一个文件,名字叫做 num.txt,内容如下:

1 2 3 4 5
6 7 8 9 0

我想从这个文件中读取 3 个整数,也就是 1 2 3

我知道 struct.unpack 可能可以做到这一点,但我就是搞不定。以下是我尝试过的方式:

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

有没有人能帮我一下?

附注

这是我得到的 num.txt 文件的内容:

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

2 个回答

4

struct 是用来处理C语言中数字的二进制表示的。如果你有的是文本形式的数字,那你只需要直接用 int() 来转换它们就可以了。

>>> [int(x) for x in '1 2 3 4 5'.split()]
[1, 2, 3, 4, 5]
5

你并不是用 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]

如果你想要一个包含每行 int 数字的 listlist

撰写回答