解析stdout的输出

时间:2013-02-16 22:24:15

标签: python

我正在尝试从python程序中运行一些hadoop命令......

例如,如果从命令行执行:

  bin/hadoop dfs -ls /hdfs/query/path

它返回hdfs查询路径中的所有文件。 所以非常类似于unix

现在我试图基本上从python中做这个...并从中做一些操作。

 exec_str = "path/to/hadoop/bin/hadoop dfs -ls " + query_path
 os.system(exec_str)

现在,我试图抓住这个输出来做一些操作。 例如..计数文件数? 我查看了子进程模块,但后来......这些都不是本机shell命令。因此不确定我是否可以应用这些概念 怎么解决这个问题?

2 个答案:

答案 0 :(得分:2)

你可以使用http://docs.python.org/2/library/subprocess.html check_ouput,如果它想要捕获它,你可能会想要它。

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'

答案 1 :(得分:1)

os.popen(exec_str)将返回一个文件类型对象,您可以随后调用read方法。