我使用Python为Ubuntu桌面编写了一个应用程序指示器,它通过subprocess调用多个外部程序。在英语语言环境下运行良好,但在其他语言环境下会出现错误。
我知道有一种方法可以使用subprocess.call( ['command','arg1','arg3'], env=new_env_dict)
,但我想知道是否有一种方法可以强制所有subprocess
调用都有新的环境而不是每次都调用。
我使用Python为Ubuntu桌面编写了一个应用程序指示器,它通过subprocess调用多个外部程序。在英语语言环境下运行良好,但在其他语言环境下会出现错误。
我知道有一种方法可以使用subprocess.call( ['command','arg1','arg3'], env=new_env_dict)
,但我想知道是否有一种方法可以强制所有subprocess
调用都有新的环境而不是每次都调用。
目前我还没有找到一种全局告诉所有subprocess
调用使用特定环境的方法,所以我决定使用单个函数,仅接受参数列表,并设置如相关帖子中所示的语言环境,但略有变化。
def run_cmd(self, cmdlist):
new_env = dict( os.environ )
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist,env=new_env)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout