python命令执行输出

Python command execution output

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Running shell command from python and capturing the output

我想将命令的输出捕获到一个变量中,以便稍后该变量可以再次使用。我需要更改此脚本,以便执行以下操作:

1
2
3
4
#!/usr/bin/python
import os
command = raw_input("Enter command:")
os.system(command)

如果在运行此脚本时输入"ls",则会得到以下输出:

1
Documents Downloads Music Pictures Public Templates Videos

我想把这个字符串(ls命令的输出)捕获到一个变量中,以便稍后再使用它。我该怎么做?


1
2
3
4
import subprocess
command = raw_input("Enter command:")
p = subprocess.Popen(command, stdout=subprocess.PIPE)
output, error = p.communicate()

命令的输出可以用subprocess模块捕获,特别是check_output功能。

1
output = subprocess.check_output("ls")

有关check_output所采用的参数列表,请参阅subprocess.Popen的文档。


这是我过去的做法。

1
2
3
4
5
6
7
>>> import popen2
__main__:1: DeprecationWarning: The popen2 module is deprecated.  Use the subprocess module.
>>> exec_cmd = popen2.popen4("echo shell test")
>>> output = exec_cmd[0].read()
>>> output
'shell test
'