Python 2.7 使用Python subprocess.check_output()并将LC_ALL作为第一个参数

Python 2.7 使用Python subprocess.check_output()并将LC_ALL作为第一个参数,python-2.7,subprocess,Python 2.7,Subprocess,从Python脚本中,我想调用一些外部程序,并在脚本中使用它们的输出。现在我发现这个脚本在我的本地系统上运行,但在另一个使用另一种语言的系统上出现问题。因此,我不想用不同的语言检查输出,而是想用指定的“LC_ALL=en_US.utf8”作为第一个参数来调用这些程序。但子流程似乎不喜欢这样: lc = "LC_ALL=en_US.utf8" uptimedata = subprocess.check_output([lc, "/bin/uptime"]) 当我运行脚本时,我得到: Traceb

从Python脚本中,我想调用一些外部程序,并在脚本中使用它们的输出。现在我发现这个脚本在我的本地系统上运行,但在另一个使用另一种语言的系统上出现问题。因此,我不想用不同的语言检查输出,而是想用指定的“LC_ALL=en_US.utf8”作为第一个参数来调用这些程序。但子流程似乎不喜欢这样:

lc = "LC_ALL=en_US.utf8"
uptimedata = subprocess.check_output([lc, "/bin/uptime"])
当我运行脚本时,我得到:

Traceback (most recent call last):
  File "./serverwatch.py", line 22, in <module>
    uptimedata = subprocess.check_output([lc, "/bin/uptime"])
  File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
回溯(最近一次呼叫最后一次):
文件“/serverwatch.py”,第22行,在
uptimedata=子进程。检查_输出([lc,“/bin/uptime”])
文件“/usr/lib/python2.7/subprocess.py”,第537行,在check_输出中
进程=Popen(stdout=PIPE,*popenargs,**kwargs)
文件“/usr/lib/python2.7/subprocess.py”,第679行,在__
错误读取,错误写入)
文件“/usr/lib/python2.7/subprocess.py”,第1259行,在执行子进程中
引发子对象异常
OSError:[Errno 2]没有这样的文件或目录
我知道subprocess.check_output()希望第一个参数是要调用的命令。那么,如何使用更改的LC运行该命令


这是关于Debian Wheezy的Python 2.7.3。另一个系统正在运行相同的版本。

通过bash执行命令:

>>> lc = "LC_ALL=en_US.utf8"
>>> command = ["/usr/bin/bash", "-c", "%s /bin/uptime" % lc]
>>> command
['/usr/bin/bash', '-c', 'LC_ALL=en_US.utf8 /bin/uptime']
>>> uptimedata = subprocess.check_output(command)
>>> uptimedata
b' 13:26:01 up 17:43,  1 user,  load average: 0.36, 0.41, 0.44\n'
>>>