2014-10-01 3 views
-1

Я читаю и извлекаю некоторые цифры из 2 LARGE-файлов, сохраняя их в 2 списках. Затем создайте гистограммы из сохраненных списков.Обработка двоичного файла, содержащего массив с использованием python

Требуется много времени, чтобы прочитать все файлы, чтобы сделать 2 списка. Я решил, что если бы я сохранил списки в файле, я мог бы повторно использовать их, не читая все файлы снова.

Теперь списки большие тоже, так что если я пишу в двоичный файл и содержит 2 списка, как ...

[1,2,3,4,5,6,7..] 
[a,b,c,d,e,f..] 

Как я могу обработать этот двоичный файл и читать как массивы в? Для небольших списков, когда я сделал, что я просто хранить затем скопировал его и вставить его в коде обработки, как

x= [1,2,3,4,5,6,7..] 
y=[a,b,c,d,e,f..] 

Спасибо

ответ

1

Попробуйте pickle. Это позволит сохранить ваши списки 'out.dat':

with open('out.dat', 'wb') as pkl_file: 
    pickle.dump([x,y], pkl_file, -1) 

И это будет загружать их потом:

with open('out.dat', 'rb') as pkl_file: 
    x,y = pickle.load(pkl_file) 

Таким образом, вы могли бы положить в код что-то вроде:

if not os.path.exists('out.dat'): 
    x, y = generate_x_y() #your time consuming method 
    with open('out.dat', 'wb') as pkl_file: 
     pickle.dump([x,y], pkl_file, -1) 
else: 
    with open('out.dat', 'rb') as pkl_file: 
     x,y = pickle.load(pkl_file) 
+0

спасибо. – user3456863

0

Pickle - хороший способ. Если вы хотите портативность, вы можете пойти за JSON.

import json 

x = [1,2,3,4,5,6,7] 
y = ['a','b','c','d','e','f'] 

with open('saved_data.json', 'w') as f: 
    json.dump([x, y], f) # or as a dict: json.dump(dict(x=x, y=y)) 

# To read it back... 

with open('saved_data.json') as f: 
    x, y = json.load(f) 

>>> x 
[1, 2, 3, 4, 5, 6, 7] 
>>> y 
[u'a', u'b', u'c', u'd', u'e', u'f'] 

И еще одна часто упускаемая из виду альтернатива заключается в использовании shelve.

>>> import shelve 
>>> shelf = shelve.open('saved_data.shelf') 
>>> shelf 
{} 
>>> shelf['x'] = x 
>>> shelf['y'] = y 
>>> shelf 
{'y': ['a', 'b', 'c', 'd', 'e', 'f'], 'x': [1, 2, 3, 4, 5, 6, 7]} 
>>> shelf.close() 

>>> shelf = shelve.open('saved_data.shelf') # reopen shelf 
>>> shelf['x'] 
[1, 2, 3, 4, 5, 6, 7] 
>>> shelf['y'] 
['a', 'b', 'c', 'd', 'e', 'f'] 
Смежные вопросы