python 读取文件的三种方式,linecache模块读取文件

python 读取文件的三种方式,linecache模块读取文件

read(),readline(),readlines()是python读取文件常用的三种方式,下面看看这三种方式读取文件的区别

首先准备一个TestRead.txt文档,内容如下:
1. 使用read()方法读取文件,f.read()会一次读取全部内容(一定要记得读取之后使用f.close()关闭文件,以便尽早的释放所占用的系统资源并尽早将文件置于更安全的状态)

with open(r"E:\Anaconda\Pythoncode\TestRead.txt","r",encoding='utf8') as f:
    print(f.read())
f.close()

结果如图:
在这里插入图片描述
f.read(size)可以跟参数,例如f.read(10),会读取10个字节的内容。这里需要注意的是,换行符也会被算作一个字符
在这里插入图片描述
2. f.readline()每次会读取一行的内容

with open(r"E:\Anaconda\Pythoncode\TestRead.txt","r",encoding='utf8') as f:
    print(f.readline())
f.close()

结果如图:
在这里插入图片描述
3. f.readlines(),会读取全部的内容,然后返回一个list,每行的内容就是list中的一个元素

with open(r"E:\Anaconda\Pythoncode\TestRead.txt","r",encoding='utf8') as f:
    print(f.readlines())
f.close()

结果如图:
在这里插入图片描述
如果要使用f.readlines()逐行输出每行的内容,方法和list的遍历一致

with open(r"E:\Anaconda\Pythoncode\TestRead.txt","r",encoding='utf8') as f:
     for i in f.readlines():
         print(i,end="")
f.close()

结果:
在这里插入图片描述
4. linecache模块读取文件,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行。

linecache.getline(filename,lineno):从名为filename的文件中得到第lineno行。这个函数从不会抛出一个异常–产生错误时它将返回”(换行符将包含在找到的行里)。
如果文件没有找到,这个函数将会在sys.path搜索

import linecache

f = linecache.getline("readTest.txt",5)#必须要有参数,参数为5,则输出第五行的数据
print(f)
linecache.clearcache()#清空缓存。 如果你不再需要之前使用 getline() 从文件读取的行即可使用此函数。

在这里插入图片描述

linecache.getlines()从名为filename的文件中得到全部内容,输出为列表格式,以文件每行为列表中的一个元素

import linecache

f = linecache.getlines("readTest.txt")
print(f)
linecache.clearcache()

结果:
在这里插入图片描述
也可以指定输出的范围,如输出前四行(其实相当于list的切片操作list[0:4]):

import linecache

f = linecache.getlines("readTest.txt")[0:4]
print(f)
linecache.clearcache()

在这里插入图片描述
linecache.checkcache(filename) 检查缓存的有效性。如果在缓存中的文件在硬盘上发生了变化,并且你需要更新版本,使用这个函数。如果省略filename,将检查缓存里的所有条目。

linecache.updatecache(filename) 更新文件名为filename的缓存。如果filename文件更新了,使用这个函数可以更新linecache.getlines(filename)返回的列表

import linecache

f = linecache.getlines("readTest.txt")
print(f)
linecache.clearcache()
print(linecache.clearcache())#检查缓存的有效性。如果在缓存中的文件在硬盘上发生了变化,并且你需要更新版本,使用这个函数。如果省略filename,将检查缓存里的所有条目。
print(linecache.updatecache("readTest.txt"))#更新文件名为filename的缓存。如果filename文件更新了,使用这个函数可以更新linecache.getlines(filename)返回的列表
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值