2012-02-13 159 views
3

读阵列我目前正在读与Python的Fortran文件具有以下技术的Python:二进制文件

with open(myfile, "rb") as f: 
    for i in range (0, n): 
     s = struct.unpack('=f', f.read(4)) 
     mylist.append(s[0]) 

但是对于大型阵列很慢。有没有办法一次读取整个循环的内容并将其放入mylist以避免每个项目的转换/追加?

非常感谢。

+0

如果您将格式字符串从'= f''更改为''= {} f'.format(n)',您可以用一个'struct.unpack()'调用读取整个文件。 – martineau 2013-01-29 17:19:47

回答

10

这是array模块是什么:

a = array.array('f') 
a.fromfile(f, n) 

现在你可以使用数组对象像一个正常的序列类型。如果您需要tolist,也可以将其转换为列表。