一種方法是使用lines = p.readlines()
代替。這將讀取不是一個,而是讀取輸出中的所有行,並將它們作爲字符串列表返回。但是,您可能不想使用os.popen
模塊,而是使用新模塊subprocess的相應功能。
您可以使用"".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
對不起,我沒有看到您的評論。 'readlines'命令是有幫助的,但由於某種原因,grabc並沒有將readline中的所有值都取出來。在運行py文件後回答是這樣的 '0,0,193 readlines的值= ['#0000c1 \ n']'答案是['#0000c1 \ n']但我希望答案是'[[ '0,0,193''#0000c1 \ n']' – Sam
我現在看到你的意思了。奇怪的是,不是'grabc'的所有輸出似乎都落在'p.readlines()'中......在使用'subprocess'模塊時也是如此。那麼,你仍然可以從十六進制再現數值... –
感謝您的轉換代碼。 – Sam