请帮助我在以下场景中使用子进程时处理异常。我相信你们中的许多人都可以提出一些非常先进的异常陷阱,但我真的在寻找基本的知识,所以我可以随着时间的推移逐步建立起来。此代码将jpeg图像写入已安装的Windows网络共享。我故意切换共享的读/写权限,基本上拒绝Pi访问。我不希望我的程序在没有良好存储位置的情况下发出它的数字内容,而只是传递给我一个明智的信息。
snap_pic = 'raspistill -t 1200 -a '+pic_tag+' -ae 50,0x00,0x8080FF -o '+file_path
try:
subprocess.check_call(snap_pic, shell=True)
except subprocess.CalledProcessError:
print ( 'Cannot write to network storage' )
sys.exc_clear()
else:
print ( 'Image number '+image_no+' being processed' )
在今晚之前,我甚至不知道“subprocess”是什么,我使用os.system来调用'snap_pic'。我看到了一些诱捕限制,所以在这里我试图加强我的小游戏。 我应该在这里使用.call或.check_call吗? 无论连接是否存在,我的“except”命令总是会被绕过。 我是否必须为此代码段的每次迭代清除这些行的错误标志?
与往常一样,非常感谢任何帮助。
答案 0 :(得分:0)
尝试使用PiCamera Python package。与使用子进程相比,它使用起来更简单,更清晰。
以下是演示如何拍照的文档中的基本示例:
import time
import picamera
with picamera.PiCamera() as camera:
camera.resolution = (1280, 720)
camera.start_preview()
camera.exposure_compensation = 2
camera.exposure_mode = 'spotlight'
camera.meter_mode = 'matrix'
camera.image_effect = 'gpen'
# Give the camera some time to adjust to conditions
time.sleep(2)
camera.capture('foo.jpg')
camera.stop_preview()