【发布时间】:2019-02-08 14:05:57
【问题描述】:
我正在编写一个代码,其中我使用 subprocess.Popen 命令在终端上运行一个脚本,该脚本将从数据库中检索一些结果。我可能会从数据库中获得单个结果,也可能会从数据库中获得多个结果,基于这些结果我正在编写一个条件。为此,我想知道我从 subprocess 命令获得的输出数量。我知道,为了逐行读取标准输出,我们使用-
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())
但即使我从标准输出获得输出,它也无法正常工作并给出计数值 =0。有人可以告诉我如何使用带有子进程的某些命令计算您从标准输出获得的输出数
我想要类似下面的东西
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
有人可以帮我一些方法吗??
【问题讨论】:
-
一旦你已经用 readlines 读取了文件,第二次调用什么也得不到,因为你已经在文件的末尾了。保存 readLines() 的内容并在此副本上调用 len() 和您的循环。
-
调用print(proc.stdout.readlines())后能看到屏幕上是否有输出吗?,看一眼stackoverflow.com/a/2813530/4990642
标签: python subprocess