0

我想将文件中的下一个逻辑行读入python,其中逻辑的意思是“根据python的语法”。

我写了一个小命令,它从文件中读取一组语句,然后打印出如果你将这些语句键入 python shell 会得到什么,并带有提示和返回值。很简单——阅读每一行,然后评估。效果很好,直到您遇到多行字符串。

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

作为一个简单的例子,假设我有一个文件包含

2 + 2

我要打印

>>> 2 + 2
4

如果我有一个文件

"""Hello
World"""

我要打印

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

其中第一个是微不足道的——读取一行,评估,打印。但是我需要对注释行的特殊支持。现在三引号。等等。

4

2 回答 2

1

您可能想查看代码模块中的InteractiveInterpreter

runsource()方法展示了如何处理不完整的输入。

于 2013-09-17T07:50:40.297 回答
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 = ">>> "
于 2013-09-17T09:21:15.690 回答