2014-02-28 99 views
0

我試圖解析與一羣MD5哈希密碼的TXT文件(轉讓)時 我的代碼是語法錯誤:意外的EOF在解析解析txt文件

with open('weak.txt') as f: 
    i = 0 
    for line in f: 
     weak.append(eval(line.strip())) 
     if 'str' in line: 
      break 

但我是一個越來越

SyntaxError: unexpected EOF, File "<string>", line 1 
    1660fe5c81c4ce64a2611494c439e1ba 
           ^

我試圖添加原始輸入到我的代碼,但它只是掛起。有任何想法嗎?

+4

你爲什麼在MD5碼上使用'eval'? 'eval'期望它的參數是一個包含Python語句的字符串。 – Barmar

+0

,因爲所有的MD5密碼都是我想從txt文件中獲取的字符串。我完全偏離軌道嗎? – Quantico

+0

是的,你完全脫離了賽道。 –

回答

2

您不應該打電話給eval

with open('weak.txt') as f: 
    i = 0 
    for line in f: 
     weak.append(line.strip()) 
     if 'str' in line: 
      break 

eval函數試圖將該字符串解釋爲一系列python語句。你不想那樣。通常沒有很好的理由使用eval。你想把md5sum當成一個字符串。當您使用語句for line in ff進行迭代時,您要求文件對象爲文件中的每一行返回字符串對象。換句話說,line已經包含你想要的東西,你不需要讓python解釋器執行它。

+1

...特別是在任何類型的輸入上,無論是來自文件,用戶輸入,參數還是下載的網頁 – mhlester

+0

@mhlester,true,儘管通常當'eval'(如果曾經)將被使用:當你沒有原始源代碼並需要動態運行代碼時。否則,只需使用其餘的代碼運行它。 –

+0

@PaulDraper你的陳述毫無意義。 「您沒有原始源代碼並需要動態運行代碼」。如何使用'eval'解決沒有源代碼的問題? –