mατ*_*ĸøb 5 python console raw-input
我正在编写一个Python脚本来解析来自QR阅读器(系统被视为键盘)的输入.
目前我正在使用,raw_input()但此功能等待EOF /行尾符号,以便将收到的字符串提交给程序.我想知道是否有一种方法可以连续解析输入字符串,而不仅仅是在行末端限制的块中.
在实践中: - 在python中是否有一种方法可以异步并连续地解析控制台输入?- 有没有办法改变raw_input()(或等效函数)寻找另一个字符,以便将字符串读取提交到程序中?
看来您通常试图解决两个问题:
对于第一部分,它会根据您调用的输入函数的具体情况而有很大差异,但对于标准输入,您可以使用类似的东西
sys.stdin.read(1)
Run Code Online (Sandbox Code Playgroud)
至于异步解析,您可以采取多种方法。Python 是同步的,因此您必然需要涉及一些子进程调用。使用子进程库手动生成函数是一种选择。您还可以使用 Redis 或一些轻量级作业队列之类的工具来弹出输入块,并让另一个后台脚本读取和处理它们。最后,gevent是一个非常流行的基于协程的库,用于生成异步进程。使用 gevent,整个设置看起来像这样:
class QRLoader(object):
def __init__(self):
self.data = []
def add_data(data):
self.data.append(data)
# if self._data constitutes a full QR code
# do something with data
gevent.spawn(parse_async)
def parse_async():
# do something with qr_loader.data
qr_loader = QRLoader()
while True:
data = sys.stdin.read(1)
if data:
qr_loader.add_data(data)
Run Code Online (Sandbox Code Playgroud)