python调用popen.communicate没有输出

时间:2018-01-16 10:02:59

标签: python

我有一个声明为

的类函数
    def catFunc(self,filename):
    print "catFunc",filename
    process = subprocess.Popen(['cat',/root/scratch.php], stdout=subprocess.PIPE, shell=True)
    out, err = process.communicate()
    print (out)
    print (err)

并像这样调用

fn = '/root/scratch.php'
self.catFunc(fn)

但我看不到输出,也无法弄清楚为什么

任何帮助非常感谢

2 个答案:

答案 0 :(得分:2)

阅读文件内容

def catFunc(self,filename):
    with open(filename) as f:
        s = f.read()
    return s

如果您需要使用子进程模块:

import subprocess

def catFunc(filename):
    print "catFunc"
    task = subprocess.Popen(["cat", filename], stdout=subprocess.PIPE)
    print list(task.stdout)

catFunc()

答案 1 :(得分:0)

要检索shell命令的输出,建议您与auto&& vertex合作使用subprocess.check_output

例如:

shlex.split

那就是说,根据当前的问题标题,Rakesh是正确的。