在下面的程序中,我创建了一个名为“Tv”的类,并且从这个类中实例化了两个对象,分别称为“vardagsrums_tv”和“koks_tv”。在该程序的主要功能中,用户可以在两个对象中改变不同的设置,例如,例如,,音量和频道,通过我创建的某些类方法。到现在为止还挺好。如何将信息保存到python文件中? (简单编程)
问题的核心是,当用户改变了这些不同的设置(音量,频道)时,我想将它们保存到一个文本文件,以便当用户关闭程序并重新打开它时,所有的设置都将随着用户的离开而改变。
这是我的计划:
def main():
vardagsrums_tv = Tv(read_file(2), read_file(1))
koks_tv = Tv(read_file(5), read_file(4))
choice = None
print("***Välkommen till TV-simulatorn***")
while choice != "3":
print("""
1. Vardagsrums TV
2. Köks TV
3. Avsluta
""")
choice = input("Välj ett alternativ: ")
print("")
while choice == "1":
print(vardagsrums_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_one = input("Välj ett alternativ: ")
if choice_one == "1":
vardagsrums_tv.byt_kanal()
elif choice_one == "2":
vardagsrums_tv.sank_volym()
elif choice_one == "3":
vardagsrums_tv.hoj_volym()
elif choice_one == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
while choice == "2":
print(koks_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_two = input("Välj ett alternativ: ")
if choice_two == "1":
koks_tv.byt_kanal()
elif choice_two == "2":
koks_tv.sank_volym()
elif choice_two == "3":
koks_tv.hoj_volym()
elif choice_two == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
if choice not in ("1", "2", "3", None):
print("Du har angivit ett felaktigt alternativ. Försök igen!")
lista_1 = []
lista_1.append(vardagsrums_tv)
print(lista_1)
lista_2 =[]
lista_2.append(koks_tv)
write_file(lista_1, lista_2)
在我的main()函数结束时,你会发现,我尝试如何将当前设置保存到我的文本文件。我创建一个列表并尝试以某种方式从我的对象“vardagsrums_tv”和“koks_tv”中获取信息。我想,如果你可以打印一个对象并获得设置,那么你也可以将它附加到列表中。很明显,它没有按计划运行,因为我有一个错误。我希望你明白我在做什么:我想从一个对象(vardagsrums_tv,koks_tv)内部保存信息到一个文本文件,但我似乎无法利用我想要的信息。
这里是程序的其余部分:
def read_file(val):
val = val
text_file = open("C:\\Users\\Viktor\\Desktop\\laboration_5.txt", "r")
textrader = text_file.readlines()
lista = []
for i in range(len(textrader)):
text_line = textrader[i]
element = text_line.split(",")
lista += element[0], element[1], element[2]
text_file.close()
return lista[val]
def write_file(tv_1, tv_2):
rad_1 = tv_1
rad_2 = tv_2
for i in range(len(vardagsrums_tv)):
rad_1 += vardagsrums_tv[i], ","
for i in range(len(koks_tv)):
rad_2 += koks_tv[i], ","
text_file = open("C:\\Users\\Viktor\\Desktop\\laboration_5.txt", "w")
text_file.append(rad_1)
text_file.append(rad_2)
text_file.close
class Tv(object):
"""En vardagsrums TV"""
def __init__(self, kanal, volym):
self.kanal = int(kanal)
self.volym = int(volym)
def __str__(self):
rep = "Vardagsrums TV\n"
rep += "Kanal: " + str(self.kanal) + "\n"
rep += "Volym: " + str(self.volym) + "\n"
return rep
def byt_kanal(self):
kanal = int(input("Ange din önskade kanal: "))
while kanal < 1 or kanal > 100:
print("Du har angivet en felaktig kanal. Vänlig ange en kanal mellan 1 och 100!")
kanal = int(input("Ange din önskade kanal: "))
self.kanal = kanal
def hoj_volym(self, hoj = 1):
self.volym += hoj
if self.volym > 10:
print("Du kan inte höja volymen ytterligare.")
self.volym = 10
def sank_volym(self, sank = 1):
self.volym -= sank
if self.volym < 0:
print("Du kan inte sänka volymen ytterligare.")
self.volym = 0
def main():
vardagsrums_tv = Tv(read_file(2), read_file(1))
koks_tv = Tv(read_file(5), read_file(4))
choice = None
print("***Välkommen till TV-simulatorn***")
while choice != "3":
print("""
1. Vardagsrums TV
2. Köks TV
3. Avsluta
""")
choice = input("Välj ett alternativ: ")
print("")
while choice == "1":
print(vardagsrums_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_one = input("Välj ett alternativ: ")
if choice_one == "1":
vardagsrums_tv.byt_kanal()
elif choice_one == "2":
vardagsrums_tv.sank_volym()
elif choice_one == "3":
vardagsrums_tv.hoj_volym()
elif choice_one == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
while choice == "2":
print(koks_tv)
print("""
1. Byt kanal
2. Sänk ljudvolymen
3. Höj ljudvolymen
4. Återvänd till huvudmenyn
""")
choice_two = input("Välj ett alternativ: ")
if choice_two == "1":
koks_tv.byt_kanal()
elif choice_two == "2":
koks_tv.sank_volym()
elif choice_two == "3":
koks_tv.hoj_volym()
elif choice_two == "4":
choice = None
break
else:
print("Var god välj ett av de fyra alternativen.")
if choice not in ("1", "2", "3", None):
print("Du har angivit ett felaktigt alternativ. Försök igen!")
lista_1 = []
lista_1.append(vardagsrums_tv)
print(lista_1)
lista_2 =[]
lista_2.append(koks_tv)
write_file(lista_1, lista_2)
main()
input("Vänligen tryck enter för att avsluta.")
你有没有考虑过[pickle](https://docs.python.org/3/library/pickle.html)?另请阅读[PMOTW](https://pymotw.com/2/pickle/)。至于管理对象,请看[搁置](https://pymotw.com/2/shelve/index.html#module-shelve) – Pynchia