繁体   English   中英

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

[英]How to convert os.system command to subprocess.Popen

我需要在Windows机器(Windows 7)上在后台运行以下命令

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

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

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

没有效果。 由于我使用rpc,其他变量os.spawnl导致错误。

任何想法如何在bg中运行os.system("SET TZ=GMT-2 && firefox")

解决方案1

在* .exe命令前添加start

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

正如注释中已经暗示的那样,您可以将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更改无害,则可以直接操作os.environ

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM