如何将os.system命令转换为subprocess.Popen

时间:2017-04-11 11:08:33

标签: python

我需要在windows机器(Windows 7)的后台运行以下comamnd

os.system("SET TZ=GMT-5 && firefox")

似乎我应该使用Popen,但命令

subprocess.Popen("SET TZ=GMT-5;firefox", shell=True, stdin=None, stdout=None, stderr=None)

无效。其他变体os.spawnl导致错误,因为我使用rpc。

知道如何在bg中运行os.system("SET TZ=GMT-2 && firefox")吗?

解决方案1 ​​

在* .exe命令前添加start

os.system("SET TZ=GMT-5 && start firefox")

1 个答案:

答案 0 :(得分:2)

正如评论中已经暗示的那样,您可以将env参数传递给Popen和朋友,以修改您正在开始的程序的环境。

我猜你实际上需要subprocess.run(),但这显然取决于你在启动它后需要对该过程做些什么。

subprocess.run(['firefox'], env={'TZ': 'GMT-5'})

正如评论中所述,您可能希望通过添加os.environ传递所有内容。

env = os.environ.copy()
env['TZ'] = 'GMT-5'
subprocess.run(['firefox'], env=env)

如果您的更改无害,您当然可以直接操纵os.environ