Python 关闭来自终端的输入流

2 投票
2 回答
1692 浏览
提问于 2025-04-17 20:43

我正在为一个机器人编写一些Python代码。这段代码使用条形码扫描器输入的数据,并通过正则表达式来筛选合适的信息。问题是,这些输入是从命令行获取的。虽然输入可以正常获取,但在没有更多输入时,它并不会自动关闭。

buffer = ""

while True:
    line = sys.stdin.readline().rstrip()
    if not line:
        break
    else:
        buffer.join(line)

print buffer

任何帮助都将非常感谢。

补充说明: 我应该提到这是在Linux系统上运行的,而运行这个程序的笔记本电脑是关闭的,我不能手动停止这个程序。

2 个回答

0

也许你可以尝试一次只读取一个字符,使用 sys.stdin.read(max) 方法,然后再读取一整行。

while True:
    rcvdata = sys.stdin.read(1)
    if len(rcvdata) == 0:
        break

另外,可以看看这个讨论:Python sys.stdin.read(max) 会一直等到读取到 max 个字符(如果 max >= 0),否则会等到文件结束,但 select 表示有数据可以读取

还有

sys.stdin.readline() 方法在没有提示的情况下读取,返回的内容中间没有任何东西

0

按下结束输入的快捷键:在Unix或OSX系统中,按 ctrl + D 来表示输入结束。如果你使用的是Windows系统,则按 ctrl + Z

否则,程序将不会从 sys.stdin.readline() 返回结果。

更新

如果你无法使用键盘,可以利用扫描仪的功能;有些扫描仪允许你在扫描特定条形码时发送预定义的按键序列。有些扫描仪还允许你定义自己的按键序列。如果可能的话,可以查阅扫描仪的说明书。

撰写回答