我想从文件中读取下一个逻辑行到python,其中逻辑意味着"根据python"的语法。
我编写了一个小命令,它从文件中读取一组语句,然后打印出你在python shell中输入语句时会得到的结果,并提示提示和返回值。足够简单 - 读取每一行,然后是eval。哪个工作正常,直到你点击一个多行字符串。
我试图避免做自己的词法分析。
举个简单的例子,假设我有一个包含
的文件2 + 2
我想打印
>>> 2 + 2
4
如果我有一个带
的文件"""Hello
World"""
我想打印
>>>> """Hello
...World"""
'Hello\nWorld'
第一个是微不足道的 - 读一行,eval,print。但是我需要特别支持评论行。现在三重报价。等等。
答案 0 :(得分:1)
您可能需要查看代码模块中的InteractiveInterpreter
class。
runsource()
方法显示了如何处理不完整的输入。
答案 1 :(得分:0)
好的,所以resi有正确的想法。这是我的琐碎代码,它完成了这项工作。
#!/usr/bin/python
import sys
import code
class Shell(code.InteractiveConsole):
def write(data):
print(data)
cons = Shell()
file_contents = sys.stdin
prompt = ">>> "
for line in file_contents:
print prompt + line,
if cons.push(line.strip()):
prompt = "... "
else:
prompt = ">>> "