Как посчитать количество строк, которые мы получаем из команды subprocess.popen - PullRequest
0 голосов
/ 08 февраля 2019

Я пишу код, в котором я использую команду subprocess.Popen для запуска сценария на терминале, который будет извлекать некоторые результаты из базы данных.Я могу получить один результат из базы данных или более одного результата из базы данных, на основе которого я пишу условие.Для этого я хочу знать, сколько выводов я получаю из команды подпроцесса.Я знаю, что для чтения stdout построчно мы используем -

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, даже если я получаю вывод из stdout.Может кто-нибудь подскажите, пожалуйста, как подсчитать количество выходов, которые вы получаете от 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 голосов
/ 08 февраля 2019

Первый readlines перейти в конец вашего файла, так что второму нечего читать.Сохраните результат перед выполнением readlines на stdout.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...