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