2012-02-13 155 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,也可以將其轉換爲列表。