前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 读取文本文件的内容

Python 读取文本文件的内容

作者头像
猴哥yuri
发布2018-08-16 17:15:03
2.1K0
发布2018-08-16 17:15:03
举报
文章被收录于专栏:极客猴极客猴

题图:by ourclickdays from Instagram

阅读文本大概需要 4 分钟。

数据存储方式有很多种。如果数据的数据量比较大、数据类型繁多且要求便于搜索,我们一般会选择存储到数据库中。如果数据内容只是一些的文本信息,我们可以将数据存储到 TXT 、JSON、CSV 等文本文件中。类似存储小说、日志内容等场景,一般是将内容存储到文本文件中。数据已经存储到 txt 文件中,那该如何读取了?本文的主要内容是讲解如何读取文本文件的内容。

1 打开文件

文本操作可以想象成对水池进行加水和排水。文本文件就好比一个存储水的水池,数据就类似水。从文本文件中读取数据好比让水池排水。在这过程中,我们需要一条“管道”才能从读取到数据。在 Python 语言中,open() 函数就是这样的“管道”。当 open() 函数成功打开文件后,我们会得到一个 file 对象。

代码语言:javascript
复制
file = open('One Day.txt', 'r')

但是操作文件经常会出现各种异常,例如文件不存在,文件不具备可读属性等。因此,我们需要做异常处理工作。这里推荐使用 with 语句,其内部已经实现异常处理相关的逻辑。另外还有一个好处,我们还可以不用调用 close() 函数来关闭文件。

代码语言:javascript
复制
with open('One Day.txt', 'r') as file:
    pass

open() 函数的第二个参数是打开模式。可以是只读r,写入w,追加a、以二进制形式读取rb等。

2 read()

read() 函数读取数据方式有点暴力。它是一次性将文件的全部内容读取到内存中。如果文件太多的话,会把内存给撑爆。为了保险起见,我们通常每次只读取一小段区间内容,然后反复调用。

代码语言:javascript
复制
# -*- coding:utf-8 -*-
size = 1024
with open('one day.txt', 'r') as file:
    print(file.read(size))

3 readline()

如果我们需要每次只读取一行内容,则需要用到readline() 函数。这种读取方式虽然效率不高,但是占用内存小,能做到即读即用。

代码语言:javascript
复制
# -*- coding:utf-8 -*-
import time

with open('one day.txt', 'r') as file:
    for line in file:
        # realine() 读取整行内容,包括 "\n" 字符
        print(file.readline().strip())
        time.sleep(1)

3 readlines()

realines() 函数跟read()类似,会一次性读取所有内容,然后按行返回一个 list 对象。这种读取方式速度会比较快。但随着文本的增大,占用内存会越来越多。一般读取配置文件,可以使用这种方法。

代码语言:javascript
复制
# -*- coding:utf-8 -*-
import time

with open('one day.txt', 'r') as file:
    for line in file.readlines():
        print(line.strip())
        time.sleep(1)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客猴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 打开文件
  • 2 read()
  • 3 readline()
  • 3 readlines()
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档