作者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
1F:→ kdjf:不一定是python变了,也可能是xconf-query不一样 05/17 14:45
2F:→ buganini:自己执行看看 xfconf-query -c keyboard-layout -p ... 05/17 20:56
3F:→ letoh:确认一下 xfconf-query 是写到 stdout 还是 stderr 05/18 00:07
4F:→ DEATHX:谢谢上面大大给意见,结果真的是xfconf-query的问题。 05/21 17:22
5F:→ DEATHX:9.04的时候吐stdout,10.04以後都改吐stderr了。难怪python 05/21 17:22
6F:→ DEATHX:会抓不到 @@ 05/21 17:23