gpt4 book ai didi

python - 将变量保存在文本文件中

转载 作者:行者123 更新时间:2023-11-30 23:11:36 25 4
gpt4 key购买 nike

我想将变量(包括其值)保存到文本文件中,以便下次打开程序时,任何更改都会自动保存到文本文件中.例如:

    balance = total_savings - total_expenses 

如何将变量本身保存到文本文件中,而不仅仅是其值?本节为注册页面

    from tkinter import *
register = Tk()
Label(register, text ="Username").grid(row = 0)
Label(register, text ="Password").grid(row = 1)

e1 = Entry (register)
e2 = Entry (register, show= "*")

e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)

username = e1.get()
password = e2.get()


button1 = Button(register, text = "Register", command = register.quit)
button1.grid(columnspan = 2)
button1.bind("<Button-1>")

import json as serializer
with open('godhelpme.txt', 'w') as f:
serializer.dump(username, f)
with open('some_file.txt', 'w') as f:
serializer.dump(password, f)


register.mainloop()

修改后的代码:

    from tkinter import *
register = Tk()
Label(register, text ="Username").grid(row = 0)
Label(register, text ="Password").grid(row = 1)

username = StringVar()
password = StringVar()

e1 = Entry (register, textvariable=username)
e2 = Entry (register, textvariable=password, show= "*")

e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)


button1 = Button(register, text = "Register", command = register.quit)
button1.grid(columnspan = 2)
button1.bind("<Button-1>")

import json as serializer
with open('godhelpme.txt', 'w') as f:
serializer.dump(username.get(), f)
with open('some_file.txt', 'w') as f:
serializer.dump(password.get(), f)

登录代码:

    from tkinter import *
login = Tk()
Label(login, text ="Username").grid(row = 0)
Label(login, text ="Password").grid(row = 1)

username = StringVar()
password = StringVar()

i1 = Entry(login, textvariable=username)
i2 = Entry(login, textvariable=password, show = "*")

i1.grid(row = 0, column = 1)
i2.grid(row = 1, column = 1)

def clickLogin():
import json as serializer
f = open('godhelpme.txt', 'r')
file = open('some_file.txt', 'r')
if username == serializer.load(f):
print ("hi")
else:
print ("invalid username")
if password == serializer.load(file):
print ("HELLOOOO")
else:
print ("invalid password")



button2 = Button(login, text = "Log In", command = clickLogin)
button2.grid(columnspan = 2)


login.mainloop()

最佳答案

您必须在编译时知道变量的名称。所以你需要做的就是:

with open('some_file.txt', 'w') as f:
f.write("balance %d" % balance)

使用 dict 可以更方便地管理用于将名称映射到值的对象。

您可能还想了解 picklejson提供简单的对象序列化的模块,例如 dict .

使用序列化器如pickle的方法是:

import pickle as serializer

balance = total_savings - total_expenses
with open('some_file.txt', 'w') as f:
serializer.dump( balance, f)

您可以在提供的代码中将 pickle 更改为 json,以使用其他标准序列化程序并以 json 格式存储对象。

编辑:

在您的示例中,您尝试存储来自 tkinterEntry 小部件的文本。了解它 here .

您可能会错过使用 StringVariable 来捕获输入的文本:

为变量创建StringVar:

username = StringVar()
password = StringVar()

将 StringVar 变量注册到 Entry 小部件:

e1 = Entry (register, textvariable=username)
e2 = Entry (register, textvariable=password, show= "*")

使用 StringVar 将内容保存在两个单独的文件中:

import json as serializer
with open('godhelpme.txt', 'w') as f:
serializer.dump(username.get(), f)
with open('some_file.txt', 'w') as f:
serializer.dump(password.get(), f)

如果您希望它们位于同一个文件中,请创建一个映射(dict)并存储它:

import json as serializer
with open('godhelpme.txt', 'w') as f:
serializer.dump(
{
"username": username.get(),
"password": password.get()
}, f
)

编辑 2:

输入文本之前使用了序列化。将 save 函数(稍后可以退出)注册到注册按钮。这样,它将在用户单击它之后被调用(这意味着内容已经存在)。方法如下:

from tkinter import *

def save():
import json as serializer
with open('godhelpme.txt', 'w') as f:
serializer.dump(username.get(), f)
with open('some_file.txt', 'w') as f:
serializer.dump(password.get(), f)
register.quit()

register = Tk()
Label(register, text ="Username").grid(row = 0)
Label(register, text ="Password").grid(row = 1)

username = StringVar()
password = StringVar()

e1 = Entry (register, textvariable=username)
e2 = Entry (register, textvariable=password, show= "*")

e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)

# changed "command"
button1 = Button(register, text = "Register", command = save)
button1.grid(columnspan = 2)
button1.bind("<Button-1>")
register.mainloop()

之前发生的情况是,保存到文件过程是在用户插入任何数据之前立即发生的。通过向按钮单击注册一个函数,您可以确保只有当按下按钮时,该函数才会执行。

强烈建议您在调试环境中使用旧代码,或者使用一些打印来弄清楚代码是如何工作的。

关于python - 将变量保存在文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com