Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 使用Python subprocess.check_output()并将LC_ALL作为第一个参数_Python 2.7_Subprocess - Fatal编程技术网

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'
>>>