在 Python 中,可以绑定 sys.stdin 和死循环实现无限接收标准输入的能力。
具体示例代码如下:

main.py:
import json
import sys


def parse_line(line: str) -> (bool, str):
    try:
        d = json.loads(line)
    except:
        return False, "failed to loads from content"
    if "prompt" not in d:
        return False, "prompt not specified"
    elif type(d["prompt"]) is not str:
        return False, "prompt is not a string"
    return True, d["prompt"]


def main(stdin, parse_func):
    for line in stdin:
        content = line.rstrip()  # 以换行符为界
        if 'q' == content:  # 当标准输入为屏幕时,输入q即可中止执行。
            break
        d = None
        result, c = parse_func(content)
        print(c)
        continue


if __name__ == '__main__':
    main(sys.stdin, parse_line)

其中:

  1. 若标准输入为屏幕,则直接运行:python main.py,用户每输入一行后按回车键,即解析当前一行输入;按q后回车,即可退出执行。
  2. 若标准输入为文件,则直接运行:python main.py < input.txt,则自动解析每一行内容,解析到文末自动中止执行,无需附加“q”。若某一行为“q”,则执行到此中止执行,后续内容忽略。

用处:

  1. 可用在命令系统中,例如每行为一条命令。
  2. 可用于批处理一系列命令,每行即为一条命令。

vistart
0 声望0 粉丝

未破壳的雏。