2024-10-01 22:38:11 发布
网友
下面的代码显示运行下面的代码时的属性错误。 导入子流程 导入系统 导入shlex
cmd = 'mtr -nrc30 -s1400 -z' cmd = shlex.split(cmd) abc = shlex.split(sys.argv[1]) subprocess.call([cmd,abc])
我得到的错误如下。当子流程的两个输入都转换为list时,可能的原因是什么
AttributeError:“list”对象没有“rfind”属性
为了帮助别人解决同样的问题:这里的问题是:
subprocess.call([cmd, abc])
其中abc是要为cmd中指定的程序提供的参数列表,这些参数通过sys.argv提供给您的程序。那么,当前代码的解包结果是:
abc
cmd
sys.argv
# assume abc == ['arg1', 'arg2', ...] subprocess.call([['mtr', '-nrc30', '-s1400', '-z'], ['arg1', 'arg2', ...]])
这不起作用,因为它是一个嵌套列表。子进程只接受字符串或字符串列表—因此,要使其工作,您真正需要的是
subprocess.call(['mtr', '-nrc30', '-s1400', '-z', 'arg1', 'arg2', ...])
这可以通过使用+简单地连接两个列表来获得:
+
subprocess.call(cmd + abc)
为了帮助别人解决同样的问题:这里的问题是:
其中
abc
是要为cmd
中指定的程序提供的参数列表,这些参数通过sys.argv
提供给您的程序。那么,当前代码的解包结果是:这不起作用,因为它是一个嵌套列表。子进程只接受字符串或字符串列表—因此,要使其工作,您真正需要的是
这可以通过使用
+
简单地连接两个列表来获得:相关问题 更多 >
编程相关推荐