Python 2.7 – Schreiben und lesen Sie eine Liste aus Datei

Dies ist eine etwas seltsame Anfrage, aber ich bin auf der Suche nach einem Weg, um eine Liste zu schreiben und dann lesen Sie es wieder ein anderes Mal.

Ich habe keine Möglichkeit, die Listen neu zu machen, damit sie korrekt geformt / formatiert sind, wie das folgende Beispiel zeigt.

Meine Listen haben Daten wie die folgenden:

test data here this is one group :) test data here this is another group :) 

  • Django: Wenn Sie speichern speichern vs mit Post-Save-Signal
  • Lesen Sie mehrere Integers (und speichern Sie sie in einer Datei) mit TensorFlow (Python)
  • Wie kann ich mit Python Daten speichern?
  • Halten Sie die Daten einer Variablen zwischen Codeläufen
  • Saving numpy Array, so dass es ohne Verladung leicht verfügbar ist
  • Sparen Sie ein Wörterbuch in eine Datei (Alternative zum Pickle) in Python?
  • Wie man ein Wörterbuch in einem Feld des Django-Datenbankmodells speichert
  • Wie kann ich ein Wörterbuch von Objekten in Python speichern?
  • 2 Solutions collect form web for “Python 2.7 – Schreiben und lesen Sie eine Liste aus Datei”

    Wenn Sie es nicht brauchen, um menschlich lesbar / editierbar zu sein, ist die einfachste Lösung, einfach nur pickle zu benutzen.

    Schreiben:

     with open(the_filename, 'wb') as f: pickle.dump(my_list, f) 

    Lesen:

     with open(the_filename, 'rb') as f: my_list = pickle.load(f) 

    Wenn Sie sie brauchen, um menschlich lesbar zu sein, brauchen wir mehr Informationen.

    Wenn my_list garantiert eine Liste von Strings ohne eingebettete Zeilenumbrüche ist, schreibe ihnen nur eine Zeile:

     with open(the_filename, 'w') as f: for s in my_list: f.write(s + '\n') with open(the_filename, 'r') as f: my_list = [line.rstrip('\n') for line in f] 

    Wenn es sich um Unicode-Strings und nicht um Byte-Strings handelt, werden sie sie encode wollen. (Oder, schlimmer, wenn sie Byte-Strings sind, aber nicht unbedingt in der gleichen Codierung wie Ihr System Standard.)

    Wenn sie möglicherweise Zeilenumbrüche oder nicht druckbare Zeichen usw. haben, können Sie Escaping oder Quoting verwenden. Python hat eine Vielzahl von verschiedenen Arten der Flucht in die stdlib gebaut.

    Lassen Sie uns unicode-escape hier verwenden, um beide der oben genannten Probleme auf einmal zu lösen:

     with open(the_filename, 'w') as f: for s in my_list: f.write((s + u'\n').encode('unicode-escape')) with open(the_filename, 'r') as f: my_list = [line.decode('unicode-escape').rstrip(u'\n') for line in f] 

    Sie können auch die 3.x-artige Lösung in 2.x verwenden, entweder mit dem codecs Modul oder dem io Modul: *

     import io with io.open(the_filename, 'w', encoding='unicode-escape') as f: f.writelines(line + u'\n' for line in my_list) with open(the_filename, 'r') as f: my_list = [line.rstrip(u'\n') for line in f] 

    * TOOWTDI, also was ist der eine offensichtliche Weise? Es hängt … Für die kurze Version: Wenn Sie mit Python-Versionen vor 2.6 arbeiten müssen, verwenden Sie codecs ; Wenn nicht, verwenden Sie io .

    Solange Ihre Datei konsistente Formatierung (dh Zeilenumbrüche) hat, ist dies einfach mit nur grundlegenden Datei IO und String Operationen:

     with open('my_file.txt', 'rU') as in_file: data = in_file.read().split('\n') 

    Das wird Ihre Datendatei als eine Liste von Elementen speichern, eine pro Zeile. Um es dann in eine Datei zu stellen, würdest du das Gegenteil machen:

     with open('new_file.txt', 'w') as out_file: out_file.write('\n'.join(data)) # This will create a string with all of the items in data separated by new-line characters 

    Hoffentlich passt das zu dem, was du suchst.

    Python ist die beste Programmiersprache der Welt.