擅长:python、mysql、java
<p>你应该尽量避免外部进程。您所做的大部分工作都很容易在Python中实现,并且如果在本机实现的话,将更加紧凑和高效。在</p>
<p>此外,您还将过时的<code>os.system()</code>与{<cd2>}混合在一起,后者通常是首选的,正如<code>os.system()</code>文档中所指出的那样。在</p>
<p><code>subprocess.call()</code>只有在您不希望命令有任何输出时才真正合适。您尝试使用它的实例,<code>subprocess.check_output()</code>将是正确的调用。然而,在您(据我所知,不必要的)运行shell命令并输出到临时文件的地方,您可以简单地使用<code>subprocess.call()</code>。在</p>
<p>您需要了解shell在何时何地有用和必要。在许多地方,如果没有shell,<code>shell=True</code>会更安全、更快、更简单、更直接。如果您只运行一个简单的硬编码命令而不重定向或全局化,那么从<code>subprocess.whatever('command with args', shell=True)</code>切换到{<cd9>}将立即减少您的时间和内存占用,而不会产生任何不良影响。如果需要重定向、管道或globbing,<em>也许</em>您想要<code>shell=True</code>;但在许多情况下,用Python做这些事情将是简单而直接的。例如,下面是如何在没有shell的情况下编写<code>head</code>命令:</p>
<pre><code>with open('/tmp/randomfile', 'w') as outputfile:
subprocess.call(['head', '-n', '2', '/tmp/dev.lst'], stdout=outputfile)
</code></pre>
<p>不管怎样,在这些事情都不碍事的情况下,下面是我将如何做(我认为)你正在尝试的事情:</p>
^{pr2}$
<p>这是仓促的,但我相信我至少捕捉到了您当前的pretzel逻辑代码的大部分功能;尽管我假设在<code>/tmp</code>文件系统中散播随机输出文件不是脚本的一个基本特性。在</p>