擅长:python、mysql、java
<p>你问的有什么不同。。易于检查:</p>
<pre><code>arg = 'foo'
cmd = ['do', ' something', arg]
print cmd
cmd = ['do', ' someting {0}'.format(arg)]
print cmd
>>>
['do', ' something', 'foo']
['do', ' someting foo']
</code></pre>
<p>正如你所看到的,它们是不一样的。在</p>
<p>为了正确调用子流程,应执行以下操作:</p>
^{2}$
<p>或者:</p>
<pre><code>cmd = 'gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile={0} {1}'.format(pdf_filename, ps_filename)
subprocess.Popen(cmd, shell=True, ...)
</code></pre>
<hr/>
<p>使用参数列表或字符串之间的区别:</p>
<p>当您使用参数列表时,您将这些参数作为参数传递给shell(或者如果指定了可执行文件)</p>
<p>当你用<code>shell=True</code>发送一个字符串时,你可以让shell解析字符串并生成自己的参数。。。在</p>
<p>所以<code>['do', ' something', 'foo']</code>是3个参数,而<code>['do', ' someting foo']</code>只有2个参数。在</p>