我不明白为什么在窗户上这么难。
我想生成一组命令提示窗口,这些窗口将运行其他脚本。我想要这样做的原因是,我可以清楚地看到每个脚本的所有输出(如果我在主窗口中有线程/子进程,我就不能正确地查看所有输出)。我也不想记录输出,因为它主要用于查看进度条,而这些进度条并不真正适用于日志文件。
因此,我的需求中的个别部分起作用,但不是同时起作用:
os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
但是,os系统不允许我等到命令完成(因为start是实际的命令,当它打开新的命令提示符时它就“完成了”)
同样,如果我尝试:
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)
我该怎么做?我在某个地方读到,解决方案可能是使用processgroup,但它只是unix……或者类似的东西
或者如果您有一种在单个窗口中显示所有子进程输出的简洁方法,那么我不需要打开新的命令提示符,只需使用线程。这也行,但是如果我让4个线程下载一些东西并显示一个进度条以及输出其他信息,我不知道如何以一种可以读取的方式显示这些信息(以及避免它们相互冲突)。
PS:这是在WindowsVista上。 PPS:我希望有一个能在Windows、Linux和Mac上运行的解决方案,目前我主要关注Windows,但我希望有一个能在这三个系统上运行的解决方案,我知道Windows是最挑剔的。我只需要用“start cmd/c”替换操作系统相应的命令。
接受的答案对我不起作用。
要在新的命令提示符下打开,我必须使用:
您可以传递/等待
start
命令,使其等待终止。在阅读您对我先前答案的评论时,您需要的是:
随时保持the windows command reference在手边!
相关问题 更多 >
编程相关推荐