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的时候不容易发现,累个半死发现是小错误,要气死。
【Python 对文件read或open后不能再次读取---句柄的问题】可以尝试心里默念:莫生气莫生气莫生气,动怒不利于护发,头发要紧头发要紧。

    推荐阅读