您可能应该使用类似于以下的代码直接从stdin读取:
import os
import sys
import select
stdin_fd = sys.stdin.fileno()
try:
while True:
sys.stdout.write("Scan barcode: ")
sys.stdout.flush()
r_list = [stdin_fd]
w_list = list()
x_list = list()
r_list, w_list, x_list = select.select(r_list, w_list, x_list)
if stdin_fd in r_list:
result = os.read(stdin_fd, 1024)
result = result.rstrip()
result = [line.rstrip() for line in result.split('\n')]
for line in result:
print "Barcode scanned: %s" % line
except KeyboardInterrupt:
print "Keyboard interrupt"
此代码应处理一次读取多行的情况.读取缓冲区大小是任意的,您可能需要根据需要处理的数据来更改它.