Python 异常str()失败
我开始用树莓皮3B+和佳能6D创建一个新的3D扫描仪。多亏了gphoto2库,我有一部分Python代码来恢复图像,但我不能将我的ISO配置放在反射上 我已经做了几次测试,但都不起作用。我总是有同样的错误: 我使用gp命令将所有参数发送到佳能反射 进口:Python 异常str()失败,python,string,raspberry-pi,libgphoto2,Python,String,Raspberry Pi,Libgphoto2,我开始用树莓皮3B+和佳能6D创建一个新的3D扫描仪。多亏了gphoto2库,我有一部分Python代码来恢复图像,但我不能将我的ISO配置放在反射上 我已经做了几次测试,但都不起作用。我总是有同样的错误: 我使用gp命令将所有参数发送到佳能反射 进口: import time from datetime import datetime from sh import gphoto2 as gp import signal, os, subprocess, shutil Gp命令示例(所有工程)
import time
from datetime import datetime
from sh import gphoto2 as gp
import signal, os, subprocess, shutil
Gp命令示例(所有工程):
但这一行行不通:
ValueISO = ["--set-config iso=0"]
以下是命令终端中显示的错误
File "CameraShot.py", line 124, in <module>
gp(ValueISO)
File "/usr/local/lib/python2.7/dist-packages/sh.py", line 1427, in __call__
return RunningCommand(cmd, call_args, stdin, stdout, stderr)
File "/usr/local/lib/python2.7/dist-packages/sh.py", line 774, in __init__
self.wait()
File "/usr/local/lib/python2.7/dist-packages/sh.py", line 792, in wait
self.handle_command_exit_code(exit_code)
File "/usr/local/lib/python2.7/dist-packages/sh.py", line 815, in handle_command_exit_code
raise exc
sh.ErrorReturnCode_1: <exception str() failed>
文件“CameraShot.py”,第124行,在
gp(价值ISO)
文件“/usr/local/lib/python2.7/dist-packages/sh.py”,第1427行,在调用中__
返回RunningCommand(cmd、call_args、stdin、stdout、stderr)
文件“/usr/local/lib/python2.7/dist-packages/sh.py”,第774行,在__
self.wait()
文件“/usr/local/lib/python2.7/dist-packages/sh.py”,第792行,正在等待
self.handle\u命令\u退出代码(退出代码)
文件“/usr/local/lib/python2.7/dist packages/sh.py”,第815行,在handle\u命令\u exit\u代码中
加薪
sh.ErrorReturnCode_1:
我无法编写此命令行,否则我的相机无法理解订单。来自:
向命令传递多个参数时,每个参数必须是单独的字符串[。]
你的不是单独的字符串。拆分不同的部分(在没有引号的空格上):
另见本项目的;但简单的回答是,sh
不像shell那样将参数解析为单独的字符串
您还可以使用来处理拆分:
ValueISO = shlex.split("--set-config iso=0")
请注意,sh
这里的set_config=“iso=0”
也为您翻译为[“--set config”,“iso=0”]
。您可以将其用作:
value_iso = dict(set_config="iso=0")
然后
您得到的
sh.ErrorReturnCode\u 1:
可能是sh
中的一个bug。Python使用type(exception)。\uuu name:str(exception)
作为回溯的最后一行,并且str()
调用在sh.ErrorReturnCode
异常(sh.ErrorReturnCode\u 1
是一个异常)上失败。从中可以看出,错误消息是从字节解码为Unicode文本的,Python 2实际上无法处理从\uuuu str\uu
方法返回的Unicode对象。我得把它修好。到底什么是sh.py
?那是什么项目,不是吗?为什么不使用一个命令呢?您看到的错误是由通过sh
执行的gphoto2--set config iso=0
命令生成的。您必须阅读该命令行工具的文档,这实际上不是Python的问题。
行表示当Python试图呈现该异常时,str(exception)
失败。我看到sh
项目将Unicode数据混合到异常消息中,因此在stdout或stderr错误输出中可能有一个非ASCII字符,gphoto2--set config iso=0
以状态代码1.Hi退出时生成,事实上,我接管了我的一个同学,他用sh方法开始了这个项目。我们将说的所有基本命令都没有问题,但只要命令中有空格,它就会显示这个错误。您是否考虑过将参数作为单独的字符串传递?我没有看过sh
文档,但是如果您以列表的形式传入参数,那么我可以合理地确定sh
希望您传入预解析的参数:ValueISO=[“--set config”,“iso=0”]
谢谢您,现在它与shlex方法完美结合。
ValueISO = shlex.split("--set-config iso=0")
value_iso = dict(set_config="iso=0")
gp(**value_iso)