2014-02-28 5 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'은 인수가 파이썬 문장을 포함하는 문자열이 될 것으로 기대합니다. – 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 함수는 문자열을 일련의 파이썬 명령문으로 해석하려고 시도합니다. 너는 그걸 원하지 않아. 일반적으로 eval을 사용해야하는 좋은 이유는 없습니다. md5sum을 문자열로 원한다. 문 for line in f을 사용하여 f을 반복 할 때 파일 객체에 파일의 각 행에 대해 문자열 객체를 반환하도록 요청할 것입니다. 즉, line에 이미 원하는 내용이 포함되어 있으므로 파이썬 인터프리터에 실행하도록 요청할 필요가 없습니다.

+1

... 특히 파일, 사용자 입력, 인수 또는 다운로드 한 웹 페이지의 입력 일 수 있습니다. – mhlester

+0

@mhlester, true, 대개 'eval')가 사용됩니다 : 원본 소스가없고 코드를 동적으로 실행해야하는 경우. 그렇지 않으면 나머지 코드와 함께 실행하십시오. –

+0

@ PaulDraper 귀하의 진술은 의미가 없습니다. "원래 소스가 없으므로 코드를 동적으로 실행해야합니다." 'eval'을 사용하면 소스 코드가없는 문제를 어떻게 해결할 수 있을까요? –