想知道我将如何编写脚本代码,以便如果用户输入命令,它将结束该脚本的进程。例如,我运行scriptname.py并在其中编码,当terminalcommand进入终端时,它将关闭该脚本。
这还会强制关闭脚本吗?或者它仍然会运行代码然后关闭它。我现在编码了,所以当我按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
来使别名全局可用