您的位置:首页 > 编程语言 > Python开发

Python中的一个文件句柄问题

2007-12-08 14:20 239 查看
sharkke<sharkke.w@gmail.com> 13:26:05
file1 内容:11 file2内容:11
22 33
33 55
44 66
#/!/usr/bin/python
opfile1=open(file1,'r')
opfile2=open(file2,'r')
for i in opfile1.readlines():
for m in opfile2.readlines():
if i == m
print i
else:
pass
sharkke<sharkke.w@gmail.com> 13:26:30
大家看看这个会输出什么?
sharkke<sharkke.w@gmail.com> 13:29:20
它的输出是“11”而不是“11
33”
为什么?
xun(95217382) 13:31:30
召唤达人来解答下
ExileR<ly5_2@hotmail.com> 13:33:42
是不opfile2的文件句柄已经到了文件末尾

大师兄(H)(40375) 13:34:16
pass 啥意思啊
sharkke<sharkke.w@gmail.com> 13:34:36
readlines 不是返回一个列表吗?
xun(95217382) 13:34:41
什么都不做
大师兄(H)(40375) 13:40:10
for i in opfile1.readlines():
只执行了1次 是不是不能嵌套呢
sharkke<sharkke.w@gmail.com> 13:40:35
我调试的也是这样,可是为什么呢?
行在路上(190253687) 13:41:42
试试先把文件内容都读出来,再比较
sharkke<sharkke.w@gmail.com> 13:42:23
都读出来到两个列表里,可以,
sharkke<sharkke.w@gmail.com> 13:42:45
可是跟直接比较有什么不同呢?
行在路上(190253687) 13:42:45
那可能就是句柄问题
行在路上(190253687) 13:42:59
第一次循环已经到末尾了
sharkke<sharkke.w@gmail.com> 13:43:19
有一点明白了
行在路上(190253687) 13:43:38
你输出 一下就知道了
行在路上(190253687) 13:43:52
跟踪 一下
sharkke<sharkke.w@gmail.com> 13:47:14
是句柄问题,
xun(95217382) 13:48:58
怎么说
sharkke<sharkke.w@gmail.com> 13:49:19
如果在 for m in opfile2.readlines(): 前加一句 print opfile2.readlines()
则只有第一次会输出 opfile2 的内容列表,后面都是 []

sharkke<sharkke.w@gmail.com> 13:50:26
如果加到 for m in opfile2.readlines(): 后,则全部输出 []
暴力鸡(110826317) 13:51:28
....
xun(95217382) 13:51:44
第一次输出的opfile2内容列表是
print opfile2.readlines() 输出的
sharkke<sharkke.w@gmail.com> 13:52:12
使得
xun(95217382) 13:52:13
懂了
xun(95217382) 13:52:24
其实比较可以试试set的
xun(95217382) 13:53:20
>>> opfile1=open("file1.txt",'r')
>>> opfile2=open("file2.txt",'r')
>>> a=set(opfile1.readlines())
>>> b=set(opfile2.readlines())
>>> a&b
set(['11/n', '33/n'])
sharkke<sharkke.w@gmail.com> 13:53:40
这么简单哦
xun(95217382) 13:53:50

sharkke<sharkke.w@gmail.com> 13:57:30
http://docs.python.org/lib/types-set.html
set 的参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: