问题是,如果不停止整个程序,我就不能退出虽然循环。
当我在Raspberry Pi上执行代码时,相机开始录制,但当我想结束视频并按Ctrl c时,整个程序停止,而不是在while循环后继续。我以为信号处理器会捕捉到键盘中断,但它没有。
我的代码:
import picamera
import signal
from time import sleep
from subprocess import call
def signal_handler(signal, frame):
global interrupted
interrupted = True
signal.signal(signal.SIGINT, signal_handler)
interrupted = False
# Setup the camera
with picamera.PiCamera() as camera:
camera.resolution = (1640, 922)
camera.framerate = 30
# Start recording
camera.start_recording("pythonVideo.h264")
while True:
sleep(0.5)
print("still recording")
if interrupted:
print("Ctrl+C pressed")
camera.stop_recording()
break
# Stop recording
#camera.stop_recording()
# The camera is now closed.
print("We are going to convert the video.")
# Define the command we want to execute.
command = "MP4Box -add pythonVideo.h264 convertedVideo.mp4 -fps 30"
#Execute command.
call([command], shell=True)
# Video converted.
print("Video converted.")
我尝试的是:
bflag = True
while bflag ==True:
sleep(0.5)
print("still recording")
if interrupted:
print("Ctrl+C pressed")
camera.stop_recording()
bflag = False
错误:
pi@raspberrypi:~/Documents/useThisFolder $ python cookieVideo.py
still recording
still recording
still recording
still recording
still recording
^Cstill recording
Ctrl+C pressed
Traceback (most recent call last):
File "cookieVideo.py", line 29, in <module>
camera.stop_recording()
File "/usr/lib/python2.7/dist-packages/picamera/camera.py", line 1193, in stop_recording
'port %d' % splitter_port)
picamera.exc.PiCameraNotRecording: There is no recording in progress on port 1
正如您所见,它与@mdurant的代码完美配合。
这可以做到:
while True:
try:
sleep(0.5)
print("still recording")
except KeyboardInterrupt:
print("Ctrl+C pressed")
camera.stop_recording()
break
不知道如何阻止这个while循环无限重复。我使用检查用户输入是否为int。如果没有输入int值,则循环将无限重复。
我正在为Java的一个聊天应用程序做一个服务器。 while循环应该连接到新的客户端,但代码仍然重复连接到第一个客户端,甚至在它连接之后也是如此,从而导致绑定失败错误。我该换什么?
我正在开发一个简单的python程序,其中包括创建一个圆圈“按钮”,然后让用户在圆圈内单击。如果他们没有点击圆圈,会出现一条消息,说明他们在圆圈外点击,应该再试一次。然而,在最后一部分,我得到了一个关于代码的无休止的循环,尽管使用了中断。是否有任何人可以帮助查看是否存在错误?谢谢
我正在尝试做一个数字猜测游戏,如果用户匹配他们赢得现金的幸运数字,游戏将继续进行,直到他们用完现金。他们每打一轮都要付赌注。每一轮都会产生一个新的随机数。 我只想使用一个输入。当我把输入放在循环中,循环无限停止循环,当我把它放在循环外,它无限开始循环。我该怎么阻止这一切?我需要向while循环添加什么?我尝试突破,但我想继续比赛,直到钱用完。 我只想使用一个输入,但是当我把输入带出循环(lucky
行,并且while循环保持无限运行。但现在代码做了我想做的,它停止并计算新用户输入的次数,只要输入错误(我在输入正确值之前输入了3、6、7个错误值,它每次都起作用)。 我的问题是,扫描器如何停止无限循环?扫描仪是否会导致计算机在继续操作之前等待用户输入,因此它会继续对其进行评估,而不是无限地打印出“对不起,这不是一个有效的输入...”?我只想确定我知道为什么它停止了。
问题内容: 我有一个运行在无限循环上的脚本,并将其添加到数据库中,并且执行了一些我不能只停止一半的事情,所以我不能只按ctrl + C并停止它。 我希望能够以某种方式停止while循环,但是让它在停止之前完成最后一次迭代。 让我澄清一下: 我的代码看起来像这样: 我希望能够在结束或开始时中断while循环,但不要在执行操作之间中断,因为那样会很不好。 而且我不希望它在每次迭代后问我是否要继续。 感