2017-07-02 58 views
1

我正在嘗試發短信程序。 程序會要求您輸入用戶名和密碼(並驗證密碼) 現在,登錄後,您可以寫信給別人或者讀取您的文件(創建帳戶後,程序將創建一個文本文件:.txt,並將密碼保存在第一行)寫入文件後從文件中讀取行

如果您想在退出程序後登錄,則可以,因爲該程序只需知道是否存在帶有.txt文件的.txt文件您插入的用戶名和檢查該文件的第一行以與輸入(密碼)進行比較。

問題是當頁面不清晰(我寫信給那個用戶) 我無法登錄,甚至打印第一行,它與我的輸入完全匹配。 問題是什麼?

我的代碼(只有部分地方我讀的第一線,並與輸入比較)

with open(login_user+'.txt', 'r') as loginFile: 
     first_line = loginFile.readline() 
     loginFile.close() 
    while True: 
     login_password = raw_input('Password: ') # Taking password 
     if counter == 4: 
      print 'You failed 5 times, wait 30 seconds' 
      counter = 0 
      sleep(30) 
     elif login_password == first_line: 
      print '\nYou\'re connected to ' + login_user 
      break 
     else: 
      print(first_line) 
      print 'Incorrect password, Try again.' 
      counter += 1 

非常感謝你提前!

回答

2

第一個,你不需要輸入loginFile.close(),因爲在使用with時他是一個處理它的人。

第二個,修復之後with語句和兩行之間的縮進。

,使用rstrip爲了在該行的末尾刪除空格,當您使用raw_input它不包含空格。

with open(login_user+'.txt', 'r') as loginFile: 
    first_line = loginFile.readline().rstrip() 

string.rstrip(S [,字符])

返回尾隨刪除的字符串的副本。如果省略字符 或者無,則刪除空白字符。如果給定並且 不是無,則字符必須是字符串;該字符串中的字符將從 的字符串末尾剝離,此方法被調用。

+1

謝謝!戶田:) – OUR

+0

不客氣!祝你好運 –

1

lognFile.readline()返回字符串,包括結尾\n; raw_input OTOH不包括\n