我正在尝试编写一个非常简单的 Python 实用程序供个人使用,它计算文本文件中在命令行中指定的谓词为真的行数。这是代码:
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
对我来说,这看起来像是完全有效的 Python 代码(尽管我以前从未使用过 Python 的 eval,所以我不知道它的怪癖(如果有的话)是什么)。请告诉我如何解决此问题以使其正常工作。