Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 异常str()失败_Python_String_Raspberry Pi_Libgphoto2 - Fatal编程技术网

Python 异常str()失败

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命令示例(所有工程)

我开始用树莓皮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命令示例(所有工程):

但这一行行不通:

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)