我正在用Python编写个人助手。目前,我正在计划要做的所有事情,但是我遇到了一个我无法解决的问题。
我将运行一个主脚本,该脚本每3秒检查一次用户是否说出'Hello'
。如果他这样做了,那么它应该开始运行另一个脚本/函数并停止当前的脚本/函数。执行完任务后,它应该再次开始运行主脚本(我将为每个任务使用不同的脚本以使其更加简洁)。我曾考虑过使用while循环,但不确定这是否是最佳选择。
答案 0 :(得分:1)
select
系统调用是一种非常有效的方法,可以等待文件准备就绪后再读取:
h = {0=>{:occurrences=>1, :className=>"class"}, 3=>{:occurrences=>3, :className=>"hello"}, 5=>{:occurrences=>3, :className=>"nah"}}
new_h = h.map do |k, v|
if v[:occurrences] > 2
v[:occurrences] += 1
end
[k, v]
end.to_h
一旦读取import select
import sys
while True:
reads, _, _ = select.select([sys.stdin], [], [], 3)
if reads:
line = reads[0].readline()
if line.strip().lower() == "hello":
# do a thing
print("hi")
,并且执行了函数或过程,您的程序将返回读取hello
。
请注意,这适用于POSIX系统,但不适用于Windows(套接字除外)。