Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将os.system命令转换为subprocess.Popen_Python - Fatal编程技术网

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

Python 如何将os.system命令转换为subprocess.Popen,python,Python,我需要在windows计算机(windows 7)的后台运行以下命令 似乎我应该使用Popen,但是 subprocess.Popen("SET TZ=GMT-5;firefox", shell=True, stdin=None, stdout=None, stderr=None) 没有效果。其他变量os.spawnl会导致错误,因为我使用rpc 你知道如何在bg中运行操作系统吗 解决方案1 在*.exe命令前面添加start os.system("SET TZ=GMT-5 &&

我需要在windows计算机(windows 7)的后台运行以下命令

似乎我应该使用
Popen
,但是

subprocess.Popen("SET TZ=GMT-5;firefox", shell=True, stdin=None, stdout=None, stderr=None)
没有效果。其他变量
os.spawnl
会导致错误,因为我使用rpc

你知道如何在bg中运行操作系统吗

解决方案1

在*.exe命令前面添加
start

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

正如注释中已经暗示的,您可以将
env
参数传递给
Popen
和朋友,以修改正在启动的程序的环境

我猜您实际上希望使用
子流程.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

正如注释中已经暗示的那样,您可以将
env
参数传递给
Popen
和朋友,以修改正在启动的程序的环境

我猜您实际上希望使用
子流程.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

请参阅
Popen
env
参数。请参阅
Popen
env
参数。您需要将整个环境传递给
env
,因此,我建议将所有内容都包含在
os.environ
中,否则有些东西可能会损坏。但是,您最好直接操作
os.environ
。不过,感谢您的指针。您需要将整个环境传递到
env
,因此我建议将所有内容都包含在
os.environ
中,否则可能会出现一些问题。不过,您最好直接操作
os.environ
。不过,谢谢你的指点。