在 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)
其中:
- 若标准输入为屏幕,则直接运行:
python main.py
,用户每输入一行后按回车键,即解析当前一行输入;按q后回车,即可退出执行。 - 若标准输入为文件,则直接运行:
python main.py < input.txt
,则自动解析每一行内容,解析到文末自动中止执行,无需附加“q”。若某一行为“q”,则执行到此中止执行,后续内容忽略。
用处:
- 可用在命令系统中,例如每行为一条命令。
- 可用于批处理一系列命令,每行即为一条命令。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。