繁体   English   中英

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

[英]How to read next logical line in python

我想将文件中的下一个逻辑行读取到python中,其中逻辑表示“根据python的语法”。

我编写了一条小命令,该命令从文件中读取一组语句,然后打印出将这些语句键入python shell并显示提示和返回值的结果。 足够简单-阅读每一行,然后评估。 效果很好,直到您敲了多行字符串。

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

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

2 + 2

我要列印

>>> 2 + 2
4

如果我有一个文件

"""Hello
World"""

我要列印

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

其中第一个很简单-读一行,评估,打印。 但是然后我需要对注释行的特殊支持。 现在三重引号。 等等。

您可能需要看一下代码模块中的InteractiveInterpreter

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

好的,所以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 = ">>> "

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM