我有以下代码-
from sys import version
class ExampleClass(object):
def get_sys_version(self):
return version
x = ExampleClass()
print x.get_sys_version()
它被这段代码解析 -
import ast
source = open("input.py")
code = source.read()
node = ast.parse(code, mode='eval')
并导致此错误 -
Traceback (most recent call last):
File "parse.py", line 5, in <module>
node = ast.parse(code, mode='eval')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 37, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 1
from sys import version
这似乎是一个解析起来非常简单的文件 - 它确实可以运行 - 为什么解析器会抛出这个错误?
请您参考如下方法:
这是因为您使用的是 mode='eval',它仅适用于单个表达式。您的代码有多个语句,因此请改用 mode='exec'。 (这是默认值)
参见 documentation for compile()用于解释 mode 参数,因为这是 ast.parse() 使用的。
