作者DEATHX (幽光)
看板Python
標題[問題] python 2.6.2與2.7.3 readlines的差異?
時間Thu May 17 11:19:56 2012
各位前輩好,小弟比較常出沒在小企鵝版跟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