python文件操作之文件读取方式

1 

前一章节,我们大概了解了文件的打开方式以及一些读写操作,这一章节我们来具体学习一下《python的文件读取方式》

0x00 回顾

read([size]):读取文件(读取size个字节,默认读取全部)
readline([size]):读取一行
readlines([size]):读取文件至内存,返回每一行组成的列表

0x01 read(size)方法

#python.txt的内容为:
#i_love_python1
#i_love_python2
#i_love_python3
f = open("python.txt")
#本文以size为例,无size则默认读取全部,size>len(python.txt)也读取全部,这里主要分析size小于的情况
#第一次读取
f.read(1) //程序打印出i
#第二次读取
f.read(1) //程序则打印出_
#第三次读取
f.read(100) //程序打印出love_python1\ni_love......
#为什么呢?因为第二次read时,文件的指针指向已经发生了变化

0x02 readline(size)方法

#python.txt的内容为:
#i_love_python1
#i_love_python2
#i_love_python3
f = open("python.txt")
#第一次读取
f.readline(1) //程序打印出i
#第二次读取
f.readline(1) //程序则打印出_
#第三次读取
f.readline(100) //程序打印出love_python1\n,指针指向下一行开头
#第四次读取
f.readline()  //程序打印出i_love_python2\n,指针指向下一行开头
#注意指针指向的变化

0x03 realines()方法

#python.txt的内容为:
#i_love_python1
#i_love_python2
#i_love_python3
f = open("python.txt")
list_rls = f.readlines(1) //此时的list_rls的值为['i_love_python1\n','i_love_python2\n','i_love_python3\n']
为什么readlines的size(1)不是读取一个字符呢?这时我们要看一下readlines的定义
>>> help(f.readlines)
Help on built-in function readlines:

readlines(...)
    readlines([size]) -> list of strings, each a line from the file.

    Call readline() repeatedly and return a list of the lines so read.
    The optional size argument, if given, is an approximate bound on the
    total number of bytes in the lines returned.
#什么是an approximate bound on the total number of bytes?
#其实这里的size并非普通的size,而是io模块的io.DEFAULT_BUFFER_SIZE,这个size的大小为8192
这就意味这当我们的文件远大于8192个字节是,我们使用readlines(1)来读取是,len(list_rls)是一个近似8192的大小

0x04 iter 使用迭代器处理文件


f = open('python.txt')
iter_i = iter(f)
lines = 0 #记录行数
for line in iter_i:
    lines += 1
    print line
关于迭代器的相关知识,可自行上网搜索学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值