百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

20 天学 Python 文件操作:Day 2 深入理解文件读取方法

wptr33 2025-01-02 19:37 14 浏览

在第一天的学习中,我们已经掌握了如何使用 open() 打开文件。今天,我们将深入探讨文件的读取方法,包括常见的 read()、readline() 和 readlines(),以及它们的使用场景。

文件读取的常用方法

方法

功能描述

read()

一次性读取文件的全部内容。

readline()

每次读取文件的一行,适合逐行处理大文件。

readlines()

将文件的每一行读取为一个字符串列表。

1. 使用 read()读取文件的全部内容

read() 方法会读取文件中的所有内容并返回一个字符串。适合处理较小的文件。

示例:

假设文件 example.txt 内容如下:

Hello, Python!
Learning file operations.
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

输出:

Hello, Python!
Learning file operations.

注意事项:

  • 如果文件内容过大,read() 可能会占用过多内存。

2. 使用 readline()逐行读取文件

readline() 每次只读取一行,非常适合处理大文件。

示例:

with open('example.txt', 'r') as file:
    line1 = file.readline()
    line2 = file.readline()
    print(f"Line 1: {line1}")
    print(f"Line 2: {line2}")

输出:

Line 1: Hello, Python!

Line 2: Learning file operations.

注意事项:

  • readline() 返回的字符串包括行末的换行符 \n。
  • 如果到达文件末尾,readline() 会返回空字符串。

3. 使用 readlines()读取所有行并返回列表

readlines() 会一次性读取所有行,将它们存储在一个列表中,每行是一个字符串元素。

示例:

with open('example.txt', 'r') as file:
    lines = file.readlines()
    print(lines)

输出:

['Hello, Python!\n', 'Learning file operations.\n']

可以用循环逐行处理:

with open('example.txt', 'r') as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())

输出:

Hello, Python!
Learning file operations.

性能比较与选择建议

方法

优点

缺点

read()

简单直接,适合小文件

对大文件内存占用较高

readline()

逐行读取,节省内存,适合大文件处理

每次只读取一行,效率较低

readlines()

一次性获取所有行,便于操作

大文件可能导致内存不足

总结选择建议:

  • 小文件:read() 或 readlines()
  • 大文件:readline() 或逐行迭代处理

逐行读取大文件的推荐方法

可以直接使用文件对象作为迭代器,逐行读取,效率更高:

with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())

输出:

Hello, Python!
Learning file operations.

常见错误与注意事项

  1. 文件过大时使用 read() 或 readlines()
  2. 可能导致内存不足。
  3. 解决方案:使用 readline() 或文件对象迭代。
  4. 处理多余换行符
  5. readline() 和 readlines() 返回的内容会包含换行符。
  6. 解决方案:使用 strip() 去除换行符。

练习任务

  1. 创建一个名为 poem.txt 的文件,写入以下内容:
  2. Roses are red, Violets are blue, Python is fun, And so are you.
  3. 使用 read() 读取并打印完整内容。
  4. 使用 readline() 打印每一行内容,并在行前加上行号(如 Line 1: ...)。
  5. 使用 readlines() 将所有行存入列表,并打印列表长度。
  6. 尝试使用文件对象迭代器读取文件并去掉换行符。

完成后,你将对文件读取方法有更深入的理解。明天我们将学习文件的写入方法!

相关推荐

【推荐】一款开源免费、美观实用的后台管理系统模版

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍...

Android架构组件-App架构指南,你还不收藏嘛

本指南适用于那些已经拥有开发Android应用基础知识的开发人员,现在想了解能够开发出更加健壮、优质的应用程序架构。首先需要说明的是:AndroidArchitectureComponents翻...

高德地图经纬度坐标批量拾取(高德地图批量查询经纬度)

使用方法在桌面上新建一个index.txt文件,把下面的代码复制进去保存,再把文件名改成index.html保存,双击运行打开即可...

flutter系列之:UI layout简介(flutter ui设计)

简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。...

Android开发基础入门(一):UI与基础控件

Android基础入门前言:...

iOS的布局体系-流式布局MyFlowLayout

iOS布局体系的概览在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置的框架布局(M...

TDesign企业级开源设计系统越发成熟稳定,支持 Vue3 / 小程序

TDesing发展越来越好了,出了好几套组件库,很成熟稳定了,新项目完全可以考虑使用。...

WinForm实现窗体自适应缩放(winform窗口缩放)

众所周知,...

winform项目——仿QQ即时通讯程序03:搭建登录界面

上两篇文章已经对CIM仿QQ即时通讯项目进行了需求分析和数据库设计。winform项目——仿QQ即时通讯程序01:原理及项目分析...

App自动化测试|原生app元素定位方法

元素定位方法介绍及应用Appium方法定位原生app元素...

61.C# TableLayoutPanel控件(c# tabcontrol)

摘要TableLayoutPanel在网格中排列内容,提供类似于HTML元素的功能。TableLayoutPanel控件允许你将控件放在网格布局中,而无需精确指定每个控件的位置。其单元格...

想要深入学习Android性能优化?看完这篇直接让你一步到位

...

12个python数据处理常用内置函数(python 的内置函数)

在python数据分析中,经常需要对字符串进行各种处理,例如拼接字符串、检索字符串等。下面我将对python中常用的内置字符串操作函数进行介绍。1.计算字符串的长度-len()函数str1='我爱py...

如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步

假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将...

Python入门知识点总结,Python三大数据类型、数据结构、控制流

Python基础的重要性不言而喻,是每一个入门Python学习者所必备的知识点,作为Python入门,这部分知识点显得很庞杂,内容分支很多,大部分同学在刚刚学习时一头雾水。...