저는 개인적인 용도로 매우 간단한 Python 유틸리티를 작성하려고합니다.이 유틸리티는 명령 줄에 지정된 조건자가 참인 텍스트 파일의 줄 수를 계산합니다. 여기 코드는 다음과 같습니다Python Eval :이 코드에 어떤 문제가 있습니까?
import sys
pred = sys.argv[2]
if sys.argv[1] == "stdin" :
handle = sys.stdin
else :
handle = open(sys.argv[1])
result = 0
for line in handle :
eval('result += 1 if ' + pred + ' else 0')
print result
나는 python count.py myFile.txt "int(line) == 0"
를 사용하여 실행하면, 나는 다음과 같은 오류 얻을 :
File "c:/pycode/count.py", line 10, in <module>
eval('toAdd = 1 if ' + pred + ' else 0')
File "<string>", line 1
toAdd = 1 if int(line) == 0 else 0
이 내가 전에 파이썬의 평가를 사용한 적이 있지만 (나에게 완벽하게 유효한 파이썬 코드 모양을 , 그래서 나는 그것의 단점이 있다면 무엇인지 모른다.) 이 문제를 해결할 수있는 방법을 알려주십시오.
이것은 단순하고 효율성면에서 다른 버전에 비해 월등히 뛰어납니다. –
감사합니다. 이것은 다른 버전보다 훨씬 빠르다. 왜냐하면 해석기가 O (N) 대신에 술어 O (1)을 구문 분석하고 컴파일하기 때문이다. – dsimcha