在Python for循环中使用subprocess.call()时的不稳定行为

时间:2015-05-27 18:32:23

标签: python for-loop cmd subprocess

在我下面附带的脚本中,我尝试使用Python进行一个非常简单的过程。 顺序执行本机Windows命令以及从Freeware,可移植程序调用可执行文件。 subprocess.call()功能虽然没有按预期运行。

我遇到的行为:

ONE变量被调用然后停止/等待,就像我期望的那样,但当我退出ONE(taskmgr)时,它启动TWO和{{1同时然后等待。

〜当我退出THREE时,它同时调用两个可移植程序THREEFOUR并等待。

〜然后它开始FIVE并等待。

〜最后它同时执行其余命令而不会暂停。

对此行为的原因有何解释?和/或建议的工作来完成相同的结果?

SIX

编辑:我希望/希望每个命令都被执行,但移动到下一个命令,直到当前命令被取消/终止。与使用import subprocess def AutoCommands(): ONE = 'taskmgr /0 /startup' TWO = 'taskschd.msc' THREE = 'services.msc' FOUR = '"%CD%/FolderDirectory/PortableProgram" -custom -flags' FIVE = '"%CD%/FolderDirectory/PortableProgram2" -more -flags' SIX = '"%CD%/FolderDirectory/PortableProgram3" -more -flags' SEVEN = '"appwiz.cpl"' EIGHT = 'wuapp' autocommands = [ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT] for command in autocommands: subprocess.call(command, shell=True) AutoCommands() 等类似...我在start /wait program.exe && program2.exe中编写了上述脚本,它按照您的预期运行,在命令之间等待。但是,如果我尝试使用.bat.bat执行os.system(),则表现出相同的行为。如果我尝试直接使用subprocess.Popen(),则表现出相同的行为。

我还尝试使用os.system("start /wait program.exe && start /wait program2.exe")(不是我想要使用的)建议here,但根本无法使用。

0 个答案:

没有答案