2016-08-22 4 views
3

Ich habe eine sehr große Liste von Listen. Eins meiner Programme tut das:Speichern und Abrufen von Listen aus Dateien

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)) 

Jetzt muss ein anderes unabhängiges Skript diese Liste von Listen zurück lesen.

Wie mache ich das?

Was ich versucht habe:

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

Hinweis: power_trace_application ist eine Liste der Liste der Listen.

Dies speichert es als eine Liste mit einem Element als eine große Zeichenfolge.

Wie kann man große Listen oder eine Liste von Listen effizient aus Dateien in Python speichern und abrufen?

+2

Verwenden [Python Gurke ] (https://docs.python.org/2/library/pickle.html) – Deadlock

+0

nicht sicher, wie das im Vergleich zu Pickle in Bezug auf Geschwindigkeit/Speicher vergleicht, aber wenn Ihre Listen "normale" Form haben, können Sie auch versuchen, zu konvertieren zu numpy array und dann 'numpy.save' verwenden – Julien

+0

@Deadlock Ich benutzte Gurke und es funktioniert! – PRP

Antwort

3

Sie können Ihre Liste zu json serialisieren und sie wieder deserialisieren. Das ist wirklich nichts in Darstellung ändern, Ihre Liste ist bereits gültig 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) 

und dann lesen Sie es einfach zurück:

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

Für Geschwindigkeit können Sie eine json Bibliothek mit C-Backend (wie ujson). Und das funktioniert auch mit benutzerdefinierten Objekten.

3

Verwenden Sie die Bibliothek Json, um strukturierte Informationen (in Form von JSON) effizient in einer Textdatei zu lesen und zu schreiben.

  • Um Daten über die Datei zu schreiben, verwenden Sie json.dump() und
  • Um json Daten aus der Datei, verwenden json.load()
0

Es wird schneller abrufen:

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())) 
Verwandte Themen