Python 关闭来自终端的输入流
我正在为一个机器人编写一些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 表示有数据可以读取
还有
0
按下结束输入的快捷键:在Unix或OSX系统中,按 ctrl + D 来表示输入结束。如果你使用的是Windows系统,则按 ctrl + Z。
否则,程序将不会从 sys.stdin.readline()
返回结果。
更新
如果你无法使用键盘,可以利用扫描仪的功能;有些扫描仪允许你在扫描特定条形码时发送预定义的按键序列。有些扫描仪还允许你定义自己的按键序列。如果可能的话,可以查阅扫描仪的说明书。