我正在编写代码,其中我正在使用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
有人可以帮我一些方法吗?
答案 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)