python中显示attribu的子进程

2024-10-01 22:38:11 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码显示运行下面的代码时的属性错误。 导入子流程 导入系统 导入shlex

cmd = 'mtr -nrc30 -s1400 -z'
cmd = shlex.split(cmd)
abc = shlex.split(sys.argv[1])
subprocess.call([cmd,abc])

我得到的错误如下。当子流程的两个输入都转换为list时,可能的原因是什么

AttributeError:“list”对象没有“rfind”属性


Tags: 代码cmd属性系统错误sys流程list
1条回答
网友
1楼 · 发布于 2024-10-01 22:38:11

为了帮助别人解决同样的问题:这里的问题是:

subprocess.call([cmd, abc])

其中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)

相关问题 更多 >

    热门问题