2016-08-22 4 views
3

У меня очень большой список списков. Одна из моих программ делает это:сохранение и извлечение списков из файлов

power_time_array = [[1,2,3],[1,2,3]] # In a short form 

with open (file_name,'w') as out: 
     out.write (str(power_time_array)) 

Теперь еще один независимый скрипт должен прочитать этот список списков.

Как это сделать?

То, что я пробовал:

with open (file_name,'r') as app_trc_file : 
    power_trace_of_application.append (app_trc_file.read()) 

Примечание: power_trace_application список списка списков.

Это хранит его как список с одним элементом в виде огромной строки.

Как эффективно хранить и извлекать большие списки или список списков из файлов в python?

+2

Используйте [питон рассол ] (https://docs.python.org/2/library/pickle.html) – Deadlock

+0

не уверен, как это сравнивается с рассолом с точки зрения скорости/памяти, но если ваши списки имеют «правильную» форму, вы также можете попробовать конвертировать до numpy массива, а затем использовать 'numpy.save' – Julien

+0

@Deadlock Я использовал pickle, и он работает! – PRP

ответ

3

Вы можете сериализовать свой список в json и десериализовать его обратно. Это на самом деле ничего не меняет в представлении, список уже действует в формате JSON:

import json 


power_time_array = [[1,2,3],[1,2,3]] # In a short form 

with open (file_name,'w') as out: 
    json.dump(power_time_array, out) 

, а затем просто прочитать его обратно:

with open (file_name,'r') as app_trc_file : 
    power_trace_of_application = json.load(app_trc_file)  

Для скорости, вы можете использовать библиотеку JSON с C бэкэндом (например, ujson). И это также работает с пользовательскими объектами.

3

Используйте библиотеку Json для эффективного чтения и записи структурированной информации (в виде JSON) в текстовый файл.

  • Для записи данных на файл, используйте json.dump() и
  • Для извлечения JSON данных из файла, используйте json.load()
0

Это будет быстрее:

from ast import literal_eval 


power_time_array = [[1,2,3],[1,2,3]] 


with open(file_name, 'w') as out: 
    out.write(repr(power_time_array)) 


with open(file_name,'r') as app_trc_file: 
    power_trace_of_application.append(literal_eval(app_trc_file.read())) 
Смежные вопросы