我正在尝试读取一个存储用户名和密码的txt文件,像这样分开:
Username|Password
让python将两者输入到单独的文本框中,本质上是用于登录的基本“记住我”系统。
如果运行savehover()
, savepassinput()
会将小部件的前景色更改为其他颜色。
如果.txt为空,则不应运行savepassinput()
,并通过。
这里的代码不会给我任何错误,但是它不会在文本框中输入任何内容,也不会更改按钮的颜色。
.txt文件中的所有内容都经过格式化以适合代码,那么看来是什么问题呢?
def savepassinput():
savehover()
passtxt = open("rememberme.txt", 'r')
passtxt.read()
usr, pas = line.strip().split("|")
textentry.insert(usr)
textentry2.insert(pas)
def savepasscheck():
passtxt = open("rememberme.txt", 'r')
passtxt.read()
if passtxt.read() == "":
pass
else:
savepassinput()
passtxt.close()
答案 0 :(得分:1)
假设您代码中的textbox.insert()
是正确的:
首先,您应尝试使用with语句,以确保正确打开和关闭文件。
第二,您read()
两次。它的作用是在第一次读取时将光标移动到文件末尾,然后再次读取时,它什么也不会读取。这就是为什么不调用其他函数的原因。
然后,进行如下比较:if passtxt.read() == "":
通常不是最好的主意,因为您的文件可能包含空格,制表符或换行符之类的空格。您可以做的是strip()
您刚刚读过的字符串。
最后,您可以使用if
摆脱无用的pass
情况。只需检查它是否不为空->如果不是,则进行保存,如果不是,则保存。
这是我的写法:
def savepasscheck():
with open("rememberme.txt", 'r') as passtxt:
if passtxt.read().strip() is not "":
savepassinput()
因此,此功能正在读取和检查。您应该真正遵循DRY规则,并将已阅读的文本传递给其他功能:
def savepasscheck():
with open("rememberme.txt", 'r') as passtxt:
content = passtxt.read().strip()
if content is not "":
savepassinput(content)
def savepassinput(content):
savehover()
usr, pas = content.split("|")
textentry.insert(usr)
textentry2.insert(pas)