在Python中使用struct.unpack从文件中读取整数
假设我有一个文件,名字叫做 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
数字的 list
的 list
。