Python中的一个文件句柄问题

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  的参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值