python 逐行循环 subprocess.check_output [英] python loop over subprocess.check_output by line

查看:27
本文介绍了python 逐行循环 subprocess.check_output的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要遍历命令的输出.我以为我会使用 subprocess.check_output,现在我有两个问题.

I need to loop over the output of a command. I thought I'd use subprocess.check_output, now I have two problems.

这是一个文件:

foo
bar

这是我的 python 脚本:

Here's my python script:

import subprocess

for line in subprocess.check_output(['cat', 'foo']):
  print "%r" % line

这就是我得到的:

$ python subp.py 
'f'
'o'
'o'
'
'
'b'
'a'
'r'
'
'

我希望:

$ python subp.py
'foo
'
'bar
'

推荐答案

subprocess.check_output(['cat', 'foo']) 返回一个字符串:"foo bar"

subprocess.check_output(['cat', 'foo']) returns a string: "foo bar"

因此,您的 for 循环遍历字符串,逐个打印每个字符.

Thus, your for loop iterates over the string, printing every character, one-by-one.

以下应该可以解决您的问题:

The following should fix your problem:

import subprocess

print subprocess.check_output(['cat', 'foo'])

你也可以这样做:

import subprocess

for line in subprocess.check_output(['cat', 'foo']).split('
'):
    print "%r" % line

这篇关于python 逐行循环 subprocess.check_output的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆