Как я могу получить stdout вывод дочернего процесса?

html = <<HTML
  <div id="block">
    <a href="http://google.com">link</a>
  </div>
HTML
doc = Nokogiri::HTML(html)
doc.xpath('//div/a/@href')
#=> [#<Nokogiri::XML::Attr:0x80887798 name="href" value="http://google.com">]

Или, если вы хотите быть более конкретным в отношении div:

>> doc.xpath('//div[@id="block"]/a/@href')
=> [#<Nokogiri::XML::Attr:0x80887798 name="href" value="http://google.com">]
>> doc.xpath('//div[@id="block"]/a/@href').first.value
=> "http://google.com"
10
задан Adam Stelmaszczyk 13 November 2018 в 20:00
поделиться

2 ответа

Примерно так:

import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]
19
ответ дан 3 December 2019 в 13:37
поделиться

Решение @ Paolo идеально подходит, если вы хотите распечатать результат после завершения процесса. Если вы хотите опросить вывод во время работы процесса, вы должны сделать это следующим образом:

process = subprocess.Popen(cmd, stdout=subprocess.PIPE)

while True:
    out = process.stdout.readline(1)
    if out == '' and process.poll() != None:
        break
    if out.startswith('myline'):
        sys.stdout.write(out)
        sys.stdout.flush()
25
ответ дан 3 December 2019 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: