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.

  • Wie schreibe ich eine Liste von Ganzzahlen in eine Binärdatei in Python
  • Lesen einer Liste von Listen aus einer Datei als Liste der Listen in python
  • Lesen Sie in Tupel von Listen aus Textdatei als Tupel, nicht String - Python
  • Wie man eine Ausgabezeile liest, die eine Liste der erzeugten Ganzzahlen enthält
  • Meine Listen haben Daten wie die folgenden:

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

  • Wie fügt man dem pythonpath in windows 7 hinzu?
  • 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.