2017-03-08 57 views
1

我怎樣才能調用兩個文件或一個文件(我不太確定哪一個會更容易些)並關聯兩個字符串,以便程序可以知道用戶是否輸入了正確的計數器字符串if其中一個是輸出。 因此,文件1中的行'n'將等於文件2中的行n。在一個文件中關聯項python

N.B. 我正在創建一個系統(對於挑戰:我對Python很陌生),它檢查密碼是否對關聯的用戶名是正確的,我想知道我是否可以使用文件而不是字典。 我環顧四周,但我找不到它適合我的目的

+0

文件只是一個數據blob。如果你想像字典一樣訪問它,那麼無論如何你都必須將它作爲字典(或類似的映射結構)讀入你的程序中。 – glibdud

+0

你能更精確嗎?你希望文件1中的行'n'與文件2中的行'n'相關聯?或者你是否一般在文件中查找字典的數據存儲?你可以在那裏使用一個csv文件或者一個帶有字典的Python文件。 – L3viathan

回答

1

假設這些都是小文件有任何疑問,他們兩個讀入列表行由行:

l1, l2 = [], [] # these will store the lines 
for fname, l in [(fname1, l1), (fname2, l2)]: # read in one file at a time 
    f = open(fname, "r") # opens in read mode 
    for line in f: 
     # line = line.strip() if you want to remove head/trailing newlines, tabs, etc 
     l.append(line) 
    f.close() # good practice to close explicitly even though GC would get it later 

現在您可以輕鬆通過訪問列表來檢查對應關係:

is_match = (l2[i] == l2[i]) 

如果這對您很重要,這將比創建字典更高效。

P.S.密碼系統不應該以純文本格式存儲密碼。常見的選擇是安全地存儲鹽漬密碼。如果你想嘗試這個,那就需要你進一步閱讀;請參閱:https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/