如何将信息保存到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:,然后将两个writes 放在一个缩进块中,你根本不需要close 同意,但这对作者的原始代码影响最小。这似乎是符合情境的正确举措。

以上是关于如何将信息保存到python中的文件? (简单编程)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何将 python36 命令行中的行保存到 .py 文件中?

Python - 如何将python36命令行中的行保存到.py文件中?

如何将信息作为数组python保存到json

Python CGI编程Ⅹ

Java 如何把数据保存到TXT文件,

4Python将采集的信息保存