如何计算从subprocess.popen命令

时间:2019-02-08 14:05:58

标签: python subprocess

我正在编写代码,其中我正在使用subprocess.Popen命令在终端上运行脚本,该脚本将从数据库中检索一些结果。我可能会从数据库中获得单个结果,也可能会从数据库中获得多个结果,基于这些结果我正在编写条件。为此,我想知道我从子流程命令中获得的输出数量。我知道要逐行读取标准输出,我们使用-

proc = subprocess.Popen(["some command"],stdout = subprocess.PIPE,stdin =subprocess.PIPE, shell=True)
for line in proc.stdout.readlines():
 //do whatever stuff you want

但是,如果我想计算命令中stdout的结果数,该怎么办? 我尝试使用

count=len(proc.stdout.readlines())

但是,即使我从stdout获取输出,它也无法正常工作并给出计数值= 0。有人可以告诉我如何使用带有子进程的命令来计算从stdout获得的输出数量

我想要下面的东西

proc = subprocess.Popen(["some command"],stdout = subprocess.PIPE,stdin =subprocess.PIPE, shell=True)
count = len(proc.stdout.readlines())
if count ==1:
    for line in proc.stdout.readlines():
        // do something
elif count>1
    for line in proc.stdout.readlines():
        // do something

有人可以帮我一些方法吗?

1 个答案:

答案 0 :(得分:1)

第一个readlines移至文件末尾,因此第二个没有任何内容可读取。 在标准输出上进行读取行之前,请保存结果。

proc = subprocess.Popen(["ls"],stdout = subprocess.PIPE,stdin =subprocess.PIPE, shell=True)
out = proc.stdout.readlines()
count = len(out)
if count ==1:
    for line in out:
       print (line)
elif count>1:
    for line in out:
        print (line)