![](/img/trans.png)
[英]Why does this command work with os.system() but not 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.