我試圖寫一個代碼,要求輸入電子郵件和密碼(不是爲了任何特定用途),並檢查他們對包含多行的csv文件。每行包含一個電子郵件和密碼以及一些制定的客戶詳細信息。我正在嘗試編寫一個接受電子郵件地址和密碼(5至12個字符長)的代碼,然後在文件中搜索包含電子郵件和密碼的行,並打印整行(包括客戶詳細信息)。這是到目前爲止我的代碼(有些凹陷的看起來有點古怪這裏,但實際上只是縮進的代碼塊的結果):在python中檢索和檢查密碼與csv文件
import csv
import re
import sys
f = open('A453_datafile_4_Mat 4 Data File.csv', 'r').read()
print("Welcome to our website! To access your customer details, we first require you to sign in. ")
print("")
email = input ("Email address: ")
if re.match("\A(?P<name>[\w\-_]+)@(?P<domain>[\w\-_]+).(?P<toplevel>[\w]+)\Z",email,re.IGNORECASE):
print('')
else:
email = input("Sorry, this isn't a valid email address! Try again: ")
if re.match("\A(?P<name>[\w\-_]+)@(?P<domain>[\w\-_]+).(?P<toplevel>[\w]+)\Z",email,re.IGNORECASE):
print('')
else:
print("You have entered your email incorrectly two times. The program will now terminate.")
sys.exit() #ends program
password = input ("Password: ")
if re.match("\A(?P<name>[\w\-_]+)\Z",password,re.IGNORECASE):
print('')
else:
password = input("Sorry, this isn't a valid password! Try again: ")
if re.match("\A(?P<name>[\w\-_]+)\Z",password,re.IGNORECASE):
print('')
else:
print("You have entered your password incorrectly two times. The program will now terminate.")
sys.exit() #ends program
details = [line for line in f.split('\n') if email in line] and [line for line in f.split('\n') if password in line]
if details == []:
print("Sorry, your email or password is invalid.")
else:
print("Thank you! Here are your customer details: ")
print("")
details = str(details).strip('[]')
print(details)
我在這條線的問題,因爲「和」似乎並沒有工作,我會如何想:
details = [line for line in f.split('\n') if email in line] and [line for line in f.split('\n')
如果我進入一個故意錯誤的密碼(如字母「X」),和它發生在另一條線路上存在的,它會打印該行,儘管它不包含電子郵件地址。
下面是這樣一個例子:
歡迎光臨我們的網站!要訪問您的客戶的詳細信息,我們首先需要您登錄
郵箱地址:[email protected]
密碼:X
謝謝!這裏是你的客戶的詳細信息:
'miguel5 @ bluebell.net,happy3,米格爾,桑托斯,45葡萄大道,牛津,O- X 7 3RF'
雖然它與正確的密碼:
歡迎來到我們的網站!要訪問您的客戶的詳細信息,我們首先需要您登錄
郵箱地址:[email protected]
密碼:ocrabc
謝謝!這裏是你的客戶的詳細信息:
'ojones @ coldmail.net,ocrabc,奧利弗·瓊斯,53家淡水河谷,朴茨茅斯,P03 2TD'
而這也正則表達式,因爲我不能工作如何密碼長度限制在5 - 12個字符(我是新的正則表達式並沒有被教導如何使用它):
if re.match("\A(?P<name>[\w\-_]+)\Z",password,re.IGNORECASE)
我懷疑解決這個可能主要是解決前一個問題(除非有人知道該文件的內容),儘管有些幫助,如果可能的話,將不勝感激。
可能還有其他問題,我沒有拿起,但據我所知這就是它。
我知道這個問題很長,所以感謝您花時間閱讀它,任何答案都將不勝感激!
呃 - 不要以純文本存儲密碼... –
不介意我問,爲什麼沒有數據庫? – StefanNch
@Jesse W at Z - 他們不是真正的密碼,所有的信息都是爲了這個程序的目的而編寫的。 – Kaedra