擅长:python、mysql、java
<p>您需要传递一个file对象:</p>
<pre><code>process = subprocess.Popen(search_command, stdout=open(out_file, 'w'))
</code></pre>
<p>引用<a href="https://docs.python.org/2/library/subprocess.html#popen-constructor" rel="nofollow">manual</a>,强调我的:</p>
<blockquote>
<p>stdin, stdout and stderr specify the executed program’s standard input, standard output and standard error file handles, respectively. Valid values are <strong>PIPE</strong>, an <strong>existing file descriptor</strong> (a positive integer), an <strong>existing file object</strong>, and <strong>None</strong>. PIPE indicates that a new pipe to the child should be created. With the default settings of None, no redirection will occur; the child’s file handles will be inherited from the parent.</p>
</blockquote>
<p>结合LFJ的回答-建议使用便利函数,您需要使用<code>shell=True</code>使通配符(<code>*</code>)工作:</p>
<p><code>subprocess.call(' '.join(search_command), stdout=open(out_file, 'w'), shell=True)</code></p>
<p>或者,在使用shell时,也可以使用shell重定向:</p>
<p><code>subprocess.call("%s > %s" % (' '.join(search_command), out_file), shell=True)</code></p>