2014-10-20 64 views
1

我一直在試圖創建一個程序,它接受輸入並檢查輸入是否來自文件的某些文本。我的最終目標是創建一個用戶登錄GUI,但我不會在這裏顯示GUI的代碼,因爲它有很多。 我需要弄清楚如何比較輸入文件和文件中的文本。 這是到目前爲止我的代碼從文本文件中檢查數據

def check(entry): 
    search = open('password.txt', 'r') 
    if str(entry) in str(search): 
     return (entry, "Word found") 
    else: 
     return entry, ("Word not found") 

with open('password.txt', 'r') as text: 
    print (text.read()) 

while True: 
    entry=input("\nSearch for word: ") 
    print(check(entry)) 

當我運行代碼,它會說,1,2,5和12都是文本,但沒有的是文本的話得到證實。 如果有人可以幫助它,將不勝感激,謝謝。

+0

我會建議在你的應用程序開始時將你的文件加載到字典中,並與之進行比較。執行大量文件IO操作可能會導致應用程序性能下降。另外,你永遠不應該存儲純文本密碼。這是一個重大的安全問題。 – Grice 2014-10-20 18:14:16

+0

是的,這將是我將繼續創建的東西,但在目前的時刻,我只想讓登錄實際上工作 – george 2014-10-21 18:54:24

回答

1

忽略另一條評論中提到的安全性不好的想法,str(搜索)不會像你想象的那樣工作。如果您打印它,您應該看到類似於:

<open file 'password.txt', mode 'r' at 0x0000000001EB2810> 

這是您用open函數創建的對象的描述。您需要先用.read()方法將文件讀入字符串。

+0

沒問題,相比之下,這更合理。所以我會用str(search.read())中的str(entry): – george 2014-10-21 18:53:33