亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在 python 中使用 open() 命令時遇到問題

我在 python 中使用 open() 命令時遇到問題

慕桂英3389331 2023-06-27 14:13:06
我目前正在為我的實踐開發一個桌面登錄注冊應用程序,但在登錄和注冊方面遇到了一些問題。如果我REGISTER在命令中輸入并添加我的信息,f.write()它會存儲我的信息,但之后一切都會正常,就像整個文件被格式化一樣(這是寄存器問題)。登錄問題是如果我想檢查文件中的名稱或密碼是否存在(此命令可能是錯誤的)。我嘗試使用,if login_email and login password in f:但它說不login_email存在password。代碼:f = open('pass.txt', 'w')fr = open('pass.txt', 'r')from time import sleeplogin_list = "LOGIN"register_list = "REGISTER"if 1 > -3232:    print("Type register for new account\ntype login for login into existing account")    bi = input("==>    ")    if bi.upper() in login_list:        print("you are registered?? nice now loginnn!!")        login_1 = input("your username:   ")        login_2 = input("your password:   ")        if login_1 and login_2 in fr:            print("Nice my program worked??")            exit()        else:            exit()    elif bi.upper() in register_list:        print("you are in register section: ")        sleep(.9)        print("NOTE:  Your password should only contain alphabets!")        sleep(4)        reg_1 = input("your username:     ")        sleep(.9)        reg_2 = input("your password:     ")        sleep(.9)        reg_2v1 = input("confirm password")        if reg_2 == reg_2v1:            f.write(reg_1 + " : " + reg_2 + "\n")            print("now login again,\")        else:            print("invalid password, try again")    else:        print("you gave me the wrong command")else:    exit()
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

  1. 您不應在腳本開頭同時以讀取和寫入模式打開文件。以寫入模式打開它會清空文件,因此您將無法讀取它。您還將清除所有其他用戶名和密碼。登錄時應以讀取模式打開文件,注冊時應以附加模式打開文件,以添加新行而不刪除舊行。您應該with只打開需要使用它的代碼周圍的文件。

  2. if login_1 and login_2 in fr:不是測試用戶名和密碼是否都在文件中的正確方法。由于運算符優先級,它被解析為if login_1 and (login_2 in fr):. 這只是檢查login_1不為空,然后檢查是否login_2在文件中。第二個測試永遠不會工作,因為文件的行都以換行符結尾,但login_2不是,所以它們永遠不會匹配。

您需要檢查完全格式化的行,包括換行符。

if f'{login_1} : {login_2}\n' in fr:
  1. if bi.upper() in login_list:似乎很可疑。login_list不是列表,而是字符串。因此,這將檢查是否bi.upper()有任何子字符串 - 如果用戶輸入logoringi,而不僅僅是輸入,它將成功login。這是故意的嗎?

完整代碼:

from time import sleep


login_list = "LOGIN"

register_list = "REGISTER"


if 1 > -3232:

    print("Type register for new account\ntype login for login into existing account")

    bi = input("==>    ")


    if bi.upper() in login_list:

        print("you are registered?? nice now loginnn!!")

        login_1 = input("your username:   ")

        login_2 = input("your password:   ")

        with open('pass.txt', 'r') as fr:

            if f'{login_1} : {login_2}\n' in fr:

                print("Nice my program worked??")

                exit()

            else:

                exit()


    elif bi.upper() in register_list:

        print("you are in register section: ")

        sleep(.9)

        print("NOTE:  Your password should only contain alphabets!")

        sleep(4)

        reg_1 = input("your username:     ")

        sleep(.9)

        reg_2 = input("your password:     ")

        sleep(.9)

        reg_2v1 = input("confirm password")

        if reg_2 == reg_2v1:

            with open('pass.txt', 'a') as f:

                f.write(reg_1 + " : " + reg_2 + "\n")

            print("now login again,")

        else:

            print("invalid password, try again")


    else:

        print("you gave me the wrong command")


else:

    exit()


查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號