>想知道我将如何编码到脚本中,以便如果用户输入命令,它将结束该脚本的进程。例如,我运行scriptname.py并在那里编码,当终端命令输入终端时,它将关闭该脚本。
这也会强制关闭脚本吗?或者它仍然会运行代码然后关闭它。我现在对其进行了编码,以便当我按 q 时它会关闭运行代码的程序,但我希望能够在终端中执行此操作。
cv2.imshow("Diff", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
目前我像这样编码,所以当我按 q 时,它将结束任务。
谢谢。
你必须给你的代码一个外部输入。一种简单的方法是使用命名管道(假设您使用的是 Linux 操作系统(。使用 创建命名文件
mkfifo mypipe
现在在python中,你可以打开命名管道
import os
pipe = os.fdopen(os.open('mypipe', os.O_RDONLY | os.O_NONBLOCK))
如果代码在等待输入时没有其他任何操作,则可以忽略O_NONBLOCK
标志。然后它将等待在管道中写入某些内容。
因此,现在对于等待,您可以使用 while 循环来检查管道是否收到了您想要的命令。
while pipe.read().rstrip() != "terminalcommand":
#something to do while waiting. time.sleep() maybe? Or just pass
如果您不知道命名管道的行为方式,则可以像普通文件一样向其写入一些内容。由于现在代码等待terminalcommand
,你可以这样做
echo terminalcommand > mypipe
以退出 while 循环。如果要使用单个命令,请在终端中创建别名。
alias stopmyprogram="echo terminalcommand > [directory to mypipe]/mypipe"
您可以通过将该行添加到文件~/.bash_aliases