子流程:从林志玲处获取标准输出

2024-03-28 21:51:20 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一个Python noob,我需要在Python脚本中运行一个第三方应用程序(它将stdout写入单行,它们可能使用skip_eol=True)并实时显示应用程序的stdout。你知道吗

这个

process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, b''):
    print line.rstrip()

只允许在子进程完成后获取标准输出。 我不太明白我怎么才能抓住整个stdout?你知道吗


Tags: 脚本cmdtrue应用程序forstdoutlineprocess
1条回答
网友
1楼 · 发布于 2024-03-28 21:51:20

试着这样做:

#!/usr/bin/env python2

import subprocess
import shlex

process = subprocess.Popen(shlex.split('./bash_1_line_per_second.sh'), stdout=subprocess.PIPE)

while process.poll() is None:
    print 'reading' # Just to understand better what is happening
    print process.stdout.read(1)

一次读一个字符。。。cmd的输出是二进制的吗?在这种情况下,这可能行不通。。。你知道吗

如果你提供的输出命令我可以更准确!特别是,如果需要帮助从单个字符重建行。你知道吗

这是我用来测试的bash脚本:

#!/bin/bash

counter=0
while [[ "a" == "a" ]]; do
  echo -n "This is the line number $counter"
  let counter+=1
  sleep 1
  if [[ $counter -eq 5 ]]; then 
      exit 0
  fi
done

相关问题 更多 >