如何在python中使用readline函数获取所有行?

时间:2013-10-09 09:38:21

标签: python

grabc是一个输出颜色代码和RGB值的工具。 当我使用它时,输出看起来像这样。

$grabc

'#000051'

'0,0,81'

我用这个程序来获取输出

import os

p=os.popen('grabc')

s=p.readline()

p.close()

print "a="+s


>>> "a=#000051"

但我想要

>>> "a=#000051

0,0,81"

作为输出 我该怎么办才能抓住第二条线。

我正在使用python。我需要在一个。

中获取整个输出

1 个答案:

答案 0 :(得分:0)

一种方法是使用lines = p.readlines()代替。这将不是一个,而是从输出中读取所有行,并将它们作为字符串列表返回。但是,您可能希望使用较新的subprocess模块的相应功能而不是os.popen

您可以使用"".join(lines)将字符串列表加入单个字符串。由于这些行仍然具有原始行结束字符,因此您只需使用""作为分隔符。或者,您可以strip行结束字符并使用您自己的分隔符:"\n".join([l.strip() for l in lines])

另外,请注意,您根本没有将输出分配给变量a,而只是以这种方式打印。此外,根据您想要对颜色值执行的操作,最好将它们分开并将它们分配给不同的变量。


更新:经过仔细检查,似乎并非grabc的所有输出都以这种方式捕获,无论是subprocess还是grabc > some_file 。捕获十六进制字符串,但不捕获颜色元组。但是,您可以轻松地将一个值转换为另一个值,因此这不应该是一个问题。

h = "#a7bd7a"
t = 167,189,122
"#%02x%02x%02x" % t                              # color tuple to hex string
[int(h[i:i+2], 16) for i in range(1, len(h), 2)] # hex string to color tuple