Python 对文件read或open后不能再次读取---句柄的问题

一个不注意就会犯的错误,debug老半天,切记切记。
先是open一个文件,注意这时的句柄已经从文件的开头跑到文件的末尾去了。
所以如果再次read这个文件的话,会发现什么都没有,例子如下:

f = open('/home/20200725.txt','r')
Num = len(f.readlines())
print('1 Num:',Num)
Num = len(f.readlines())
print('2 Num:',Num)

输出:

1 Num: 9164
2 Num: 0

第二次读取就什么也读不到了,所以要把句柄重新放回文件的开头,加一个f.seek(0)就解决了,修改后的代码:

f = open('/home/20200725.txt','r')
Num = len(f.readlines())
print('1 Num:',Num)
f.seek(0) # 把句柄重新放到文件开头
Num = len(f.readlines())
print('2 Num:',Num)

输出:

1 Num: 9164
2 Num: 9164

因为需要二次调用才用这种方法,最好就是第一次read文档的时候就把需要的操作都完成,别弄二次调用,一不小心就出问题了,而且debug的时候不容易发现,累个半死发现是小错误,要气死。

可以尝试心里默念:莫生气莫生气莫生气,动怒不利于护发,头发要紧头发要紧。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值