[問題] python 2.6.2與2.7.3 readlines的差異?

看板Python作者 (幽光)時間13年前 (2012/05/17 03:19), 編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/1
各位前輩好,小弟比較常出沒在小企鵝版跟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

05/17 14:45, , 1F
不一定是python變了,也可能是xconf-query不一樣
05/17 14:45, 1F

05/17 20:56, , 2F
自己執行看看 xfconf-query -c keyboard-layout -p ...
05/17 20:56, 2F

05/18 00:07, , 3F
確認一下 xfconf-query 是寫到 stdout 還是 stderr
05/18 00:07, 3F

05/21 17:22, , 4F
謝謝上面大大給意見,結果真的是xfconf-query的問題。
05/21 17:22, 4F

05/21 17:22, , 5F
9.04的時候吐stdout,10.04以後都改吐stderr了。難怪python
05/21 17:22, 5F

05/21 17:23, , 6F
會抓不到 @@
05/21 17:23, 6F
文章代碼(AID): #1Fj6vVAx (Python)