我有一个问题,我正在运行一个功能,该功能应检查文本文档中的各行,找到匹配的用户名,并在每行的列表中更改第二个密码(其密码重置程序)。文本文档通常如下所示:
test test
username password
hello hi
这是我尝试过的代码。登录时使用了reset_username。(例如,我还包括了登录功能)
密码更改功能:
def password_change():
for _ in open('info.txt', 'r').readlines():
login_info = _.split()
if reset_username == login_info[0]:
login_info[1] = [password_reenter_txt.get()]
menu_window()
登录功能:
def txt_file_log_in():
try:
for _ in open('info.txt', 'r').readlines():
login_info = _.split() #split on the space made and store result with 2 strings
if username_enter_txt.get() == login_info[0] and password_enter_txt.get() == login_info[1]:
password_fault_report.configure(text='User name and Password Correct')
global reset_username
reset_username = username_enter_txt.get()
messagebox.showinfo('Success', 'You have successfully logged in!')#pop up window informing user for sign up.
login_window.destroy()
final_window()
password_fault_report.configure(text='User name or password incorrect,')
except:
password_fault_report.configure(text='No accounts found, you need to sign in first...')
我遇到的错误是它将运行该功能并运行菜单窗口,但是它根本不会更改文档。
我是tk,python的初学者,所以这可能是一个非常愚蠢的错误,对不起。另外,如果我在帖子中犯了一个错误,请让我知道:)
'r'
open语句中的值允许您“只读”文件。为了写入您要使用的文件,'w'
但请记住,这将写入文件并删除之前存在的所有内容,因此我们要确保将所有内容都写回到文件中。
我们可以通过使用列表来存储所有值并根据需要进行更新来完成此操作。
示例代码:
def password_change(reset_username, password_reenter_txt):
# Create empty list to hold file data.
login_info = []
with open('some_file', 'r') as data:
for _ in data.readlines():
login_info.append(_.split())
print(login_info)
# Check values in list and update if condition true.
for sub_list in login_info:
if len(sub_list) > 0:
if reset_username == sub_list[0]:
sub_list[1] = password_reenter_txt
# write new values of list to file if previous condition met.
with open('some_file', 'w') as data:
for sub_list in login_info:
if len(sub_list) > 0:
data.write('{} {}\n'.format(sub_list[0], sub_list[1]))
for i in range(9):
password_change('name' + str(i+1), 'pass')
# Check new values in file.
with open('some_file', 'r') as data:
for _ in data.readlines():
print(_.strip('\n'))
使用的测试文件数据:
name1 pass1
name2 pass1
name3 pass1
name4 pass1
name5 pass1
name6 pass1
name7 pass1
name8 pass1
name9 pass1
结果:
name1 new_pass
name2 new_pass
name3 new_pass
name4 new_pass
name5 new_pass
name6 new_pass
name7 new_pass
name8 new_pass
name9 new_pass
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句