看板 Python 關於我們 聯絡資訊
各位前輩好,小弟比較常出沒在小企鵝版跟C/C++版。 雖然工作上使用python的機會遠遠大於C,但是在這個版上算是潛水潛很大的了。 今天遇到一個小問題,之前可以用的程式換了新系統(9.04 -> 12.04)後就不能用了 查了一下,發現是這一段有問題: f = os.popen('xfconf-query -c keyboard-layout -p /Default/XkbModel') kb = f.readlines() if kb[0].strip() == ... 然後用kb做判斷, 有的可能會傳回這個Property "/Default/XkbModel" doesn`t exist on channel 這代表沒有這個設定值。 在2.6之前這個也會一起被readlines()讀進來。下面的if可以繼續進行。 但是2.7以後就不會了,使得if kb[0]會有問題,因為它裡面是"空"的。 我在猜是不是因為沒有設定值時輸出的是stderr,然後2.7的readlines()只讀 stdout吐出來的東西? 另外不知道有沒有前輩可以提供一下2.6 跟 2.7的差異在哪? 我一直以為只有2.x 跟 3.x之間有差異 >.< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.43.99
kdjf:不一定是python變了,也可能是xconf-query不一樣 05/17 14:45
buganini:自己執行看看 xfconf-query -c keyboard-layout -p ... 05/17 20:56
letoh:確認一下 xfconf-query 是寫到 stdout 還是 stderr 05/18 00:07
DEATHX:謝謝上面大大給意見,結果真的是xfconf-query的問題。 05/21 17:22
DEATHX:9.04的時候吐stdout,10.04以後都改吐stderr了。難怪python 05/21 17:22
DEATHX:會抓不到 @@ 05/21 17:23