当前位置: 首页 > news >正文

Python 基础:文件

目录

  • 一、从文件中读取数据
    • 1.1 读取整个文件
    • 1.2 逐行读取
  • 二、写入文件
    • 2.1 写入空文件
    • 2.2 写入多行
    • 2.3 附加到文件

遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步!
在这里插入图片描述
本文参考:《Python编程:从入门到实践(第2版)》

一、从文件中读取数据

要使用文本文件中的信息,首先需要将信息读取到内存中。为此,我们可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。

1.1 读取整个文件

首先我们准备一个文本文件 pi_digits.txt

在这里插入图片描述

下面打开并读取这个文件,再将其内容显示到屏幕上:

with open('pi_digits.txt') as file_object:contents = file_object.read()
print(contents)

“这个形式没见过呀 /(ㄒoㄒ)/~~”。别着急,我们逐个分解。

  • 函数 open()
    我们要记住,无论以任何方式使用文件,哪怕仅仅是打印其内容,都得先 打开文件,才能访问它!
    函数 open() 接受一个参数:要打开的文件的名称(如上面的 pi_digits.txt,文件路径的内容可以参考博客:一篇文章搞懂Python的文件路径操作)
    函数 open() 返回一个表示文件的对象,Python 将该对象赋给 as 之后的变量供以后使用(如上面的 file_object

  • 关键字 with
    我们要记住,打开了文件用过之后需要关闭!
    虽然 open() 和 open() 搭配使用也可以,但是并非在任何情况下都能轻松确定关闭文件的恰当时机。而关键字 with 让我们只管打开文件,并在需要时使用它,Python 自会在合适的时候自动将其关闭。

  • 文件对象.read()
    有了表示文件对象后,使用方法 read() 来读取这个文件的全部内容,并将其作为一个长长的字符串进行返回。(上面用 contents 来接受这个返回值,这样,通过打印 contents 的值,就可将这个文本文件的全部内容显示出来)
    在这里插入图片描述

1.2 逐行读取

要以每次一行的方式检查文件,可对文件对象使用 for 循环:

filename = 'pi_digits.txt'with open(filename) as file_object:for line in file_object:print(line.rstrip())

其中 rstrip() 来消除每一行每行末尾的换行符

在这里插入图片描述
使用关键字 with 时,open() 返回的文件对象只在 with 代码块内可用。 这就是为什么上面代码中要缩进。

如果非要在 with代码块外访问的话,可以先在 with 代码块内将文件的各行存储在一个列表中,并在 with 代码块外使用该列表。

下面的示例在 with 代码块中将文件 pi_digits.txt 的各行存储在一个列表中,再在 with 代码块外打印:

filename = 'pi_digits.txt'with open(filename) as file_object:lines = file_object.readlines()print(lines)
for line in lines:print(line.rstrip())

其中,readlines() 从文件中读取每一行,并将其存储在一个列表中。(注意和 1.1 中的 read() 区分)

二、写入文件

2.1 写入空文件

现在我们没有文件,执行下面这段代码:

filename = 'programming.txt'
with open(filename,'w') as file_object:file_object.write("I love programming.")

我们会发现目录中多了文件 programming.txt

在这里插入图片描述
我们在调用 open() 时需要提供两个实参,分别告诉 Python 要文件名写的动作 'w'

打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或读写模式('r+')。
如果省略了模式实参,Python 将以默认的只读模式打开文件。

如果要写入的文件不存在,函数 open() 将自动创建它。
然而,以写入模式('w')打开文件时千万要小心,因为如果指定的文件已经存在,Python 将在返回文件对象前清空该文件的内容。

注意:Python 只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数 str() 将其转换为字符串格式。

2.2 写入多行

我们执行下面这段代码:

filename = 'programming.txt'with open(filename,'w') as file_object:file_object.write("I love programming.")file_object.write("I love creating new games.")

运行结果为:

在这里插入图片描述
并没有按照我们所期望的进行分行,这是因为函数 write() 不会在写入的文本末尾添加换行符。

要让每个字符串都单独占一行,需要在方法调用 write() 中包含换行符'\n'):

filename = 'programming.txt'with open(filename,'w') as file_object:file_object.write("I love programming.\n")file_object.write("I love creating new games.\n")

这样执行结果为:

在这里插入图片描述

2.3 附加到文件

如果要给文件添加内容,而不是覆盖原有的内容,可以以附加模式('a')打开文件。以附加模式打开文件时。如果指定的文件不存在,Python 将创建一个空文件。

下面来修改代码,在既有文件 programming.txt 中再添加一些内容:

filename = 'programming.txt'with open(filename,'a') as file_object:file_object.write("I also love finding meaning in large datasets.\n")file_object.write("I love creating apps that can run in a browser.\n")

执行结果如下:

在这里插入图片描述
确实多了两行内容!
在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/376739.html

相关文章:

  • WebForms 母版页
  • Java应用打包成Docker镜像
  • 什么是自动驾驶中的CopyCat?
  • 为什么没人详细说过智能猫砂盆?最受欢迎的好用智能猫砂盆解析!
  • AI视频智能监管赋能城市管理:打造安全有序的城市环境
  • 多态性(Java)
  • 国际期货行情相关术语
  • LeetCode20.有效的括号
  • 尚玩助手广告变现app开发
  • Anti-human IL-10 mAb (12G8), biotin:Mabtech热销品
  • 【植物大战僵尸杂交版】致敬传奇游戏玩家——一个普通人的六年坚持
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门组队编程(200分) - 三语言AC题解(Python/Java/Cpp)
  • 民生银行信用卡中心金融科技24届春招面经
  • HTML李峋同款跳动的爱心代码(双爱心版)
  • 【linux】内核从tcp层调用IP层摸索中
  • Python 中的 Pandas(数据分析与处理)
  • 【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux
  • 五大API接口:提升你的应用性能与用户体验
  • RabbitMQ实践——在Ubuntu上安装并启用管理后台
  • Ubuntu中防火墙的使用 和 开放 关闭 端口
  • ansible 模块进阶及变量
  • MYSQL数据库安装
  • Pycharm配置远程调试
  • 【Java面试】二十二、JVM篇(下):JVM参数调优与排查
  • 统计信号处理基础 习题解答10-17
  • 嵌套使用模板类
  • adb卸载系统应用
  • Rapidfuzz,一个高效的 Python 模糊匹配神器
  • 【猫狗分类】Pytorch VGG16 实现猫狗分类1-数据清洗+制作标签文件
  • 磁盘管理 磁盘介绍 MBR