<p>我不明白为什么在窗户上这么难。</p>
<p>我想生成一组命令提示窗口,这些窗口将运行其他脚本。我想要这样做的原因是,我可以清楚地看到每个脚本的所有输出(如果我在主窗口中有线程/子进程,我就不能正确地查看所有输出)。我也不想记录输出,因为它主要用于查看进度条,而这些进度条并不真正适用于日志文件。</p>
<p>因此,我的需求中的个别部分起作用,但不是同时起作用:</p>
<pre><code>os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
</code></pre>
<p>但是,os系统不允许我等到命令完成(因为start是实际的命令,当它打开新的命令提示符时它就“完成了”)</p>
<p>同样,如果我尝试:</p>
<pre><code>p = subprocess.Popen(["start", "cmd", "/k", "{command here}], shell = True) # Needs to be shell since start isn't an executable, its a shell cmd
p.wait() # I can wait until finished (although it too finishes after start finishes)
</code></pre>
<p>我该怎么做?我在某个地方读到,解决方案可能是使用processgroup,但它只是unix……或者类似的东西</p>
<p>或者如果您有一种在单个窗口中显示所有子进程输出的简洁方法,那么我不需要打开新的命令提示符,只需使用线程。这也行,但是如果我让4个线程下载一些东西并显示一个进度条以及输出其他信息,我不知道如何以一种可以读取的方式显示这些信息(以及避免它们相互冲突)。</p>
<p>PS:这是在WindowsVista上。
PPS:我希望有一个能在Windows、Linux和Mac上运行的解决方案,目前我主要关注Windows,但我希望有一个能在这三个系统上运行的解决方案,我知道Windows是最挑剔的。我只需要用“start cmd/c”替换操作系统相应的命令。</p>