如何在python中读取下一个逻辑行

时间:2013-09-17 07:47:44

标签: python

我想从文件中读取下一个逻辑行到python,其中逻辑意味着"根据python"的语法。

我编写了一个小命令,它从文件中读取一组语句,然后打印出你在python shell中输入语句时会得到的结果,并提示提示和返回值。足够简单 - 读取每一行,然后是eval。哪个工作正常,直到你点击一个多行字符串。

我试图避免做自己的词法分析。

举个简单的例子,假设我有一个包含

的文件
2 + 2

我想打印

>>> 2 + 2
4

如果我有一个带

的文件
"""Hello
World"""

我想打印

>>>> """Hello
...World"""
'Hello\nWorld'

第一个是微不足道的 - 读一行,eval,print。但是我需要特别支持评论行。现在三重报价。等等。

2 个答案:

答案 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 = ">>> "