我想检查输入是否是代码,然后将其加入更大的变量以最终执行,有什么方法可以做到这一点吗? 例如:
import readline
while True:
codelines=[]
code=raw_input(">>> ")
if code.iscode():
codelines.append(code)
elif x=="end":
break
else:
print "Not usable code."
fullcode="\n".join(codelines)
try:
exec fullcode
except Exception, e:
print e
但我知道没有像.iscode()
答案 0 :(得分:3)
您可以尝试使用ast.parse
解析输入:
import ast
while True:
codelines=[]
code=raw_input(">>> ")
try:
ast.parse(code) # Try to parse the string.
except SyntaxError:
if x=="end": # If we get here, the string contains invalid code.
break
else:
print "Not usable code."
else: # Otherwise, the string was valid. So, we add it to the list.
codelines.append(code)
如果字符串不可解析(包含无效的Python代码),该函数将引发SyntaxError
。