others - Python 3.7如何写入和读取文件列表?

我想在.txt文件中保存这些列表,我尝试了很多方法,但是,仍然有一些错误,

我尝试了基本的file.write和file.read方法,但是我得到一些错误,这说明它不能是一个列表,它必须是字符串,我不能使用pickle,因为我在一个文件中有两个列表,它们必须分开。


import random


import os.path 



firstList = []


secondList = []


sprachen = ["Afrikaans","Albanisch","Amharisch","Arabisch","Armenisch","Aserbaidschanisch","Baskisch","Bengalisch","Birmanisch","Bosnisch","Bulgarisch","Cebuano","Chichewa","Chinesisch","Mandarin","Dänisch","Deutsch","Englisch","Esperanto","Estnisch","Filipino","Finnisch","Französisch","Friesisch","Galizisch","Georgisch","Griechisch","Gujarati","Haitianisch","Hausa","Hawaiisch","Hebräisch","Hindi","Hmong","Igbo","Indonesisch","Irisch","Isländisch","Italienisch","Japanisch","Javanisch","Jiddisch","Kannada","Kasachisch","Katalanisch","Khmer","Kirigisch","Koreanisch","Korsisch","Kroatisch","Kurdisch","Kurmandschi","Lao","Lateinisch","Latein","Lettisch","Litauisch","Luxemburgisch","Malagasy","Malayalam","Malaysisch","Maltesisch","Maori","Marathi","Mazedonisch","Mongolisch","Nepalesisch","Niederländisch","Norwegisch","Paschtu","Persisch","Polnisch","Portugiesisch","Punjabi","Rumänisch","Russisch","Samonaisch","Schottisch-Gällisch","Schwedisch","Serbisch","Sesotho","Shona","Sindhi","Singhalesisch","Slowakisch","Slowenisch","Somali","Spanisch","Suaheli","Sundanesisch","Tadschikisch","Tamil","Telugu","Thailändisch","Tschechisch","Türkisch","Ukrainisch","Ungarisch","Urdu","Usbekisch","Vietnamesisch","Walisisch","Weissrussisch","Xhosa","Yoruba","Zulu"] 



print("Willkommen beim Vokabelprogramm. Viel Spass beim Lernen!")



def start():


 global name


 projekt = input("Möchten Sie eine bestehende Lerneinheit öffnen [Open] 


 oder eine neue Lerneinheit beginnen [New]?")


 if projekt =="Open":


 openProject = input("Welche Lerneinheit möchten Sie öffnen?")


 while os.path.exists(openProject +".txt"):


 name = openProject


 output()


 else:


 erstellen = input("Diese Lerneinheit existiert unter diesem Namen noch nicht. Möchten Sie diese erstellen?")


 if erstellen =="Ja":


 name = openProject


 file = open(name +".txt","w+")


 file.close()


 print("Die Lerneinheit, namens" + name +", wurde erstellt.")


 sprache()


 else:


 print("Die Aktion wird abgebrochen.")


 start()


 elif projekt =="New":


 name = input("Wie möchten Sie diese Lerneinheit nennen?")


 while name =="":


 print("Geben Sie für den Namen Ihrer Lerneinheit einen gültigen Wert ein.")


 else:


 while os.path.exists(name +".txt"):


 bestaetigung = input("Dieser Dateiname existiert bereits, möchten Sie diese Datei überschreiben?")


 if bestaetigung =="Ja":


 file = open(name +".txt","w+")


 file.close()


 print("Die Lerneinheit, namens" + name +", wurde erstellt.")


 sprache()


 else:


 print("Die Aktion wird abgebrochen.")


 start()


 else:


 file = open(name +".txt","w+")


 file.close()


 print("Die Lerneinheit, namens" + name +", wurde erstellt.")


 sprache()


 else:


 print("Diese Eingabe ist ungültig.")


 start()



def sprache():


 global ersteSprache


 global zweiteSprache


 ersteSprache = input("Welche ist die erste Sprache, in der Sie die Vokabeln prüfen möchten?")


 while ersteSprache in sprachen:


 zweiteSprache = input("Und die zweite Sprache?")


 while zweiteSprache in sprachen:


 while zweiteSprache == ersteSprache:


 print("Sie müssen 2 verschiedene Sprachen angeben!")


 zweiteSprache = input("Welche ist die zweite Sprache?")


 while zweiteSprache in sprachen:


 beginning()


 else:


 print("Diese Sprache gibt es nicht! Versuchen Sie die Sprachen nochmals einzugeben.")


 sprache()


 else:


 beginning()


 else:


 print("Diese Sprache gibt es nicht, bitte versuchen Sie es nochmals.")


 else:


 print("Diese Sprache gibt es nicht, bitte versuchen Sie es nochmals.")


 sprache()



 def beginning():


 vokabel = input("Geben Sie eine Vokabel auf" + ersteSprache +" ein:")


 if vokabel =="":


 print("Bitte geben Sie für die Vokabel einen gültigen Wert ein.")


 beginning()


 firstList.append(vokabel)


 uebersetzung = input("Was bedeutet diese Vokabel auf" + zweiteSprache +"?")


 if uebersetzung =="":


 print("Bitte geben Sie für die Übersetzung einen gültigen Wert ein.")


 uebersetzung = input("Was bedeutet diese Vokabel auf" + zweiteSprache +"?")


 secondList.append(uebersetzung)


 def abfrage():


 fertig = input("Ist das alles? Geben Sie Ja ein um die Vokabelliste zu bestätigen oder drücken Sie die Enter-Taste um noch eine Vokabel hinzuzufügen:")


 if fertig =="Ja":


 with open(name +".txt","w") as file:


 for combo in zip(firstList, secondList):


 file.writelines("".join(combo) +"n")


 output()


 elif fertig =="":


 beginning()


 else:


 print("Diese Eingabe ist ungültig, bitte versuchen Sie es nochmals")


 abfrage()


 abfrage()



 def output():


 newLanguage_1 = []


 newLanguage_2 = []


 with open(name +".txt","r") as file:


 for line in file.readlines():


 word_1, word_2 = line.split()


 newLanguage_1.append(word_1)


 newLanguage_2.append(word_2)


 ausgabe = random.choice(newLanguage_1)


 print(ausgabe)


 zahl = newLanguage_1.index(ausgabe)


 pruefen = input("Übersetzung:")


 vokabelZweiteSprache = newLanguage_2[zahl]


 def nochmal():


 nochmals = input("Möchten Sie noch eine Vokabel prüfen (ENTER-Taste)?")


 if nochmals =="":


 output()


 else:


 print("Viel Glück bei der Prüfung, Daumen sind gedrückt!")


 exit()


 if pruefen != vokabelZweiteSprache:


 print("Leider falsch! Die richtige Lösung wäre" + vokabelZweiteSprache +" gewesen. Lernen Sie diese Vokabel nochmals!")


 nochmal()


 else:


 print("Richtig!" + ausgabe +" heisst" + vokabelZweiteSprache +".")


 nochmal()


start()



时间:

你可能不熟悉一些关键函数:

zip() ->在同一时间对两个列表进行迭代

str.join() -""

str.split() -


language_1 = ["Hello","Bye","Bike","Car"] # English words


language_2 = ["Hallo","Doei","Fiets","Auto"] # Dutch words



# Saving the lists:


with open("saved_lists.txt", 'w+') as myfile:


 for combo in zip(language_1, language_2):


 myfile.writelines("".join(combo)+"n")



# Reading back:


new_language_1 = []


new_language_2 = []


with open("saved_lists.txt", 'r') as myfile:


 for line in myfile.readlines():


 word_1, word_2 = line.split()


 new_language_1.append(word_1)


 new_language_2.append(word_2)



...