-4

グラブは、カラーコードと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"

出力として、2行目を取得するにはどうすればよいですか。

私はパイソンを使用しています。そして、出力全体をaで取得する必要があります。

4

1 に答える 1

0

1 つの方法は、lines = p.readlines()代わりに使用することです。これは、出力から 1 行ではなくすべての行を読み取り、それらを文字列のリストとして返します。ただし、代わりに、新しいsubprocessモジュールos.popenの対応する関数を使用したい場合があります。

"".join(lines)文字列のリストを単一の文字列に結合するために使用できます。行には元の行末文字が残っているため""、区切り文字として使用できます。stripまたは、行末文字を使用して、独自の区切り文字を使用することもできます: "\n".join([l.strip() for l in lines]).

また、出力を変数にまったく割り当てず、そのように出力するだけであることに注意してくださいa。さらに、色の値で何をしたいかによっては、それらを分けたままにして、代わりに別の変数に割り当てる方がよい場合があります。


更新:よく調べてみると、 のすべての出力がgrabcこの方法でキャプチャされてsubprocessいるわけではないようgrabc > some_fileです。16 進文字列はキャプチャされますが、色のタプルはキャプチャされません。ただし、ある値を別の値に簡単に変換できるため、これは問題になりません。

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 に答える