Python 评估 : What's wrong with this code?

标签 python eval syntax-error

我正在尝试编写一个非常简单的 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,所以我不知道它有什么怪癖,如果有的话)。请告诉我如何解决此问题以使其正常工作。

最佳答案

尝试使用 exec 而不是 eval。解释了两者之间的区别here

关于Python 评估 : What's wrong with this code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456760/

相关文章:

ASP.NET 多个 Eval 字段

clojure 从字符串名称解析函数

javascript - 在 Javascript 中使用模板文字进行动态表达式

OCaml shebang 语法错误

python - 使用 django 管理命令运行 celery 任务

python - 给定每天到达次数,模拟泊松到达时间

python - 为什么 pip 在 vi​​rtualenv 中写入/usr/lib?

python - 为什么有一个类具有同名的类变量和实例变量?

syntax-error - 如何解决此语法错误?

sql - SQL语法错误-预期(或如