p = subprocess.Popen(args = "myprog.exe" + " " +
str(input1) + " " +
str(input2) + " " +
str(input3) + " " +
strpoints, stdout = subprocess.PIPE)
在上面的代码中,input1,input2和input3都是转换为字符串的整数.变量"strpoints"是任意长度的字符串列表.input1告诉myprog strpoints的长度.当然,当我尝试运行上面的代码时,我收到以下错误消息:
TypeError:无法隐式地将'list'对象转换为str
如何将strpoints的所有元素传递给myprog.exe?我注定要做str(strpoints)然后让myprog.exe解析这个逗号,撇号等?例如,
`>>> x = ['a','b']
`>>> str(x)
"['a','b']"
或者我应该提前创建一个巨大的字符串?例如,
'>>> x = ['a','b']
'>>> stringify(x)
'ab'
stringify会是这样的
def stringify(strlist):
rlist = ""
for i in strlist:
rlist = rlist + i + " "
return rlist
args可以是一个序列:
p = subprocess.Popen(args = ["myprog.exe"] +
[str(x) for x in [input1,input2,input3]] +
strpoints,stdout = subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
如果你的参数包含shell元字符,例如'*,并且你不希望它们被解释为这样,那么这更正确.