-4

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。我需要在 a 中获取整个输出。

4

1 回答 1

0

一种方法是lines = p.readlines()改用。这将读取的不是一个,而是输出中的所有行,并将它们作为字符串列表返回。但是,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
于 2013-10-09T09:55:14.963 回答