如何将信息保存到python中的文件? (简单编程)[关闭]
Posted
技术标签:
【中文标题】如何将信息保存到python中的文件? (简单编程)[关闭]【英文标题】:How save information to file in python? (simple programming) [closed] 【发布时间】:2015-12-28 12:59:26 【问题描述】:在下面的程序中,我创建了一个名为“Tv”的类,并从这个类中实例化了两个对象,分别称为“vardagsrums_tv”和“koks_tv”。在程序的主函数中,用户可以通过我创建的某些类方法更改两个对象中的不同设置,例如、音量和通道。到目前为止,一切顺利。
不过,问题的核心是,当用户更改了这些不同的设置(音量、频道)时,我想将它们保存到一个文本文件中,这样当用户关闭程序并重新打开它时,所有设置都将与用户离开时一样。
这是我的程序:
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吗?也可以在PMOTW 上阅读。至于管理对象,请看shelve 【参考方案1】:您应该使用"a"
(追加)而不是"w"
(写入)打开您的laboration_5.txt
文件,否则它将覆盖文件。然后使用text_file.write(data)
将数据附加到该文件。确保之后使用 text_file.close()
关闭文件。
text_file = open("C:\\Users\\Viktor\\Desktop\\laboration_5.txt", "a")
text_file.write(rad_1)
text_file.write(rad_2)
text_file.close()
【讨论】:
with
声明!这样你就不必“确保”任何事情; Python 处理它。 with open("C:\\Users\\Viktor\\Desktop\\laboration_5.txt", "a") as text_file:
,然后将两个write
s 放在一个缩进块中,你根本不需要close
。
同意,但这对作者的原始代码影响最小。这似乎是符合情境的正确举措。以上是关于如何将信息保存到python中的文件? (简单编程)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Python - 如何将 python36 命令行中的行保存到 .py 文件中?