【Python从入门到进阶】17、文件的读写操作

news2024/12/26 14:31:59

接上篇《16、文件的打开和关闭》
上一篇我们学习了Python打开和关闭文件的操作。本篇我们主要学习Python文件对象包含哪些方法,并学习文件如何进行读、写、定位和删除。

一、文件对象的属性和方法

通过上一篇的学习我们知道,open函数会返回给我们一个文件对象,通过该文件对象我们可以得到有关该文件的各种信息(访问模式、文件名等),并且可以调用“读”、“写”、“关闭”、“定位”、“重命名”等操作。

那么我们先来看看文件对象都有哪些属性和方法:

(1)属性

以下是和file对象相关的所有属性的列表:

我们打印一下文件对象的所有属性:

# 打开一个文件
fo = open("text.txt", "w")
print("文件名: ", fo.name)
print("是否已关闭 : ", fo.closed)
print("访问模式 : ", fo.mode)
#在python3.0以上版本中,softspace属性已经被移除了,这里就先注释掉了
#print("末尾是否强制加空格 : ", fo.softspace)
fo.close() # 关闭文件
print("是否已关闭 : ", fo.closed)

效果:

文件名:  text.txt
是否已关闭 :  False
访问模式 :  w
是否已关闭 :  True

(2)方法

文件对象可以操作的方法有以下:

像“file.close()”我们之前已经用过了,下面我们着重讲解一下“read”方法、“write”方法、“tell”方法,以及OS库的“rename”方法与“remove”方法。

二、文件的“写”方法

write()方法可将任何字符串写入一个打开的文件,且不会在字符串的结尾添加换行符('\n')。语法如下:

fileObject.write(string)

其中的string参数就是即将要写入文件内的信息。
示例:

# 打开一个文件
fo = open("text.txt", "w")
fo.write("Hello World!\nWellcome To My Home!\n")

# 关闭打开的文件
fo.close()

效果:

上述方法会创建text.txt文件,并将传入的参数内容写入该文件,并最终关闭文件。
注:这里的“\n”是换行的意思。

三、文件的“读”方法

read()方法从一个打开的文件中读取一个字符串。
语法:

fileObject.read([count])

在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
示例:
读取我们上面创建的text.txt文件:

# 打开一个文件
fo = open("text.txt", "r+")
str = fo.read(5)
print(f"读取的字符串是:{str}")
# 关闭打开的文件
fo.close()

效果:

三、文件定位

tell()方法可以返回文件读写的的当前位置, 即当前在文件开头多少字节之后。

seek(offset[,from])方法改变当前文件的位置。
Offset变量表示要移动的字节数。
From变量指定开始移动字节的参考位置,可以不填,,默认为0,意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。例子:
使用我们上面创建的text.txt文件:

# 打开一个文件
fo = open("text.txt", "r+")
str = fo.read(5)
print(f"第一次读取的字符串是:{str}")

str = fo.read(7)
print(f"第二次读取的字符串是:{str}")

# 查找当前位置
position = fo.tell()
print(f"当前文件位置:{position}")

# 把指针再次重新定位到文件开头
print(f"重置指针位置至开头...")
position = fo.seek(0, 0)
str = fo.read(5)
print(f"第三次读取的字符串是:{str}")

# 关闭打开的文件
fo.close()

效果:

第一次读取的字符串是:Hello
第二次读取的字符串是: World!
当前文件位置:12
重置指针位置至开头...
第三次读取的字符串是:Hello

四、重命名和删除文件

要进行文件的删除和修改,需要使用Python的os模块,它提供了文件处理操作的方法,比如重命名和删除文件。要使用os模块,必须先使用import导入该模块,然后才可以调用相关的各种功能。

1、文件重命名

os模块的rename()方法需要两个参数,当前的文件名和新文件名。
语法:

os.rename(current_file_name, new_file_name)

“current_file_name”参数指当前文件名称,“new_file_name”即将要修改成的新文件名称。
例子:
我们把之前的“text.txt”文件重命名为“new_text.txt”:

import os
 
# 重命名文件text.txt到new_text.txt。
os.rename( "text.txt", "new_text.txt" )

效果:

2、删除文件

我们可以使用remove()方法删除文件,需要提供要删除的文件名作为参数。

语法:

os.remove(file_name)

例子:下面我们删除之前创建的new_text.txt文件:

import os

# 删除一个已经存在的文件new_text.txt
os.remove("new_text.txt")

效果:

至此,文件读、写、定位、重命名和删除的操作所有内容讲解完毕,下一篇我们来学习文件序列化和反序列化的操作。

参考:尚硅谷Python爬虫教程小白零基础速通教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/130258777

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个简单的盒模型嵌套---一个大盒子里面嵌套两个中盒子,右边中盒子嵌套六个小盒子

html代码&#xff1a; <div class"box1"><div class"box2"></div><div class"box3"><div class"box4"></div><div class"box5"></div><div class"box6">&…

apple pencil值不值得购买?ipad平替电容笔安利

自从Apple Pencil上市后&#xff0c;平替电容笔在国内的销量&#xff0c;也是随之而增加&#xff0c;虽然Apple Pencil的性能不错&#xff0c;但由于其的价格太高&#xff0c;所以不少普通用户都买不起。现在市面上有很多能够代替苹果原装笔的平替电容笔。在这里&#xff0c;我…

Debezium系列之:自定义表级别Topic的名称

Debezium系列之:自定义表级别Topic的名称 一、需求背景二、去掉部分topic名称的方法三、debezium具体实现方法四、完整配置一、需求背景 debezium表级别Topic命名规则为:topic.prefix参数的值.数据库名称.表的名称现在支持实时需求,命名名称需要修改为topic.prefix参数的值.…

SAP KANBAN 从入门到放弃系列之生产补货模式

目录 系统操作 看板牌-生产补货 系统配置&#xff1a; 补充策略配置 看板状态配置 创建物料主数据 创建供应区域 创建控制周期-经典看板 系统操作 看板牌-生产补货 需要必要的看板配置和主数据设置 第一步&#xff1a;事务代码:PK13N&#xff0c;需求端KANBAN.供应端…

【数据库】 | 初始数据库

&#x1f397;️ 博客新人&#xff0c;希望大家一起加油进步 &#x1f397;️ 乾坤未定&#xff0c;你我皆黑马 目录 1、什么是数据库2、数据库分类3、 一些重要概念4、 数据存储 1、什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以…

访京东查询(自定义查询,组件形式,多页面使用,自定义查询条件)

1、效果图 2、使用了Ant Design of Vue里面的tag属性&#xff0c;也可以不用自己写样式。 3、代码模块 1、创建一个公共组件vue文件 <template><a-card size"small" :bordered"false" style"margin-bottom: 10px; padding:0px;">&l…

SVG格式文件可以用什么软件打开?

SVG是一种基于矢量的图像文件格式&#xff0c;通过基于网格上的点和线的数学公式存储图像&#xff0c;与 JPEG 等基于像素的位图文件不同。这种文件类型可以在不损失任何质量的情况下生成很小的文件&#xff0c;因而加载速度也相对更快&#xff0c;也使其成为LOGO和复杂在线图形…

SQL——多表连接查询

若一个查询同时涉及两个或两个以上的表&#xff0c; 则称之为连接查询&#xff08;在FROM子句中体现)。 参与连接的表可有多个&#xff0c;但连接操作在两个表之间进行&#xff0c;即两两连接。 连接查询包括&#xff1a; 内连接 等值连接&#xff1a;用“”比较被连接列的列值…

场景提效:多维表格重塑项目管理流程

此模板适用场景&#xff1a;多任务多团队之间的项目管理 预计实现效果&#xff1a;一张万能表格汇总所有信息&#xff0c;并可以按多视图进行或查看&#xff0c;根据待办项自动定期提醒成员同步进度。 效果对比 需求旧方式新方式统一汇总管理信息全篇文字罗列&#xff0c;呈…

【Linux】线程

1.理解地址空间和页表 1.地址空间是进程能够看到的资源窗口 2.页表决定进程真正拥有的资源情况 3.合理的对地址空间和页表进行资源划分就可以对一个进程的所有资源进行划分&#xff1a;过地址空间分为栈区、堆区…通过页表映射到不同的物理内存。 在32位平台下&#xff0c;…

Mysql学习(十一) -- 常见问题处理

1. MySQL数据库cpu飙升的话你会如何分析 重点是定位问题。 使用top观察mysqld的cpu利用率 切换到常用的数据库使用show full processlist;查看会话观察是哪些sql消耗了资源&#xff0c;其中重点观察state指标定位到具体sql pidstat 定位到线程在PERFORMANCE_SCHEMA.THREADS中…

Nevercenter CameraBag Pro照片滤镜软件 v2023.2.0

Nevercenter CameraBag Pro是一款照片滤镜工具&#xff0c;它可以让您轻松地添加各种效果和样式到您的照片中。该软件可以模拟不同类型的相机、胶片和滤镜&#xff0c;让您的照片呈现出具有艺术感的效果。 CameraBag Pro提供了多达200种不同的滤镜和效果&#xff0c;包括黑白、…

自然机器人最新发布:智能流程助手,与GPT深度融合

ChatGPT自2022年11月上线后就受到现象级地广泛关注&#xff0c;5天时间用户就已经突破百万&#xff0c;仅2个月时间月活用户就突破1亿&#xff0c;成为史上增速最快的消费级应用&#xff0c;远超TikTok、Facebook、Google等全球应用。它展现了类似人类的语言理解和对话交互能力…

java+Servlet家庭个人理财财务系统

目录 1 引言 1 1.1 选题背景 1 1.2 国内外研究现状 1 1.3 课题研究意义 1 1.4 设计目标 2 2 系统关键技术研究 3 2.1 JSP技术简介 3 2.2 Servlet技术简介 4 2.3 My Eclipse简介 7 2.4 系统运行平台 8 3 系统需求分析 9 3.1 总体需求 9 3.2…

【在Github上寻找安装ROS软件包】

【在Github上寻找安装ROS软件包】 1. Github网站搜索2. 工作空间3. WPR系列机器人仿真工具3.1 系统版本3.2 复制https git下载链接3.3 安装依赖项:3.4 编译工作空间3.5 载入工作空间的环境配置3.6 运行编译的ros程序3.6 运行rqt控制的ros程序3.7 提前初始化source文件 项目地址…

C语言学习(四)

char类型数组 字符串&#xff0c;由一个或多个字符组成的序列就做字符串。双引号不是字符串的一部分&#xff0c;只是告诉双引号里的内容是字符串&#xff0c;C语言中没有专门储存字符串的变量类型&#xff0c;字符串都被存储在char类型的数组中。数组由连续的储存单元组成&…

一文搞懂Redis事务~

先说结论&#xff1a; Redis 的事务模式具备如下特点&#xff1a; 保证隔离性&#xff1b;无法保证持久性&#xff1b;具备了一定的原子性&#xff0c;但不支持回滚&#xff1b;一致性的概念有分歧&#xff0c;假设在一致性的核心是约束的语意下&#xff0c;Redis 的事务可以…

Visual Studio 2019 的快捷键和视图布局使用

文章目录 常见快捷键视图布局 常见快捷键 Ctrl Shift / : 将选中的多行注释&#xff0c;或光标所在行 的单行注释。取消注释 这是此快捷键。 CtrlShift Enter : 重启一行&#xff0c;是从当前行的下面&#xff0c;重启一行。 Ctrl Enter : 重启一行&#xff0c;是从当前行的…

javascript中this指向问题

JavaScript中this指向问题 1、this指向window的情况 对于非箭头函数情况下&#xff0c;谁调用就指向谁,如果函数在全局作用域下调用,里面的this就是window。 在全局作用域下&#xff0c;this window function sum() {console.log(this); }sum(); // windowconsole.log(this…

中电金信:生成式AI热潮下,文本智能走向何方?

突破通用人工智能场景&#xff0c;生成式AI正在向全行业应用进攻。 一个脑筋急转弯&#xff0c;几个月前ChatGPT是这样回答的&#xff1a; 然而&#xff0c;仅仅几个月的迭代&#xff0c;它的回答却让人出乎意料。 看似调侃的对比背后实则是无数次模型训练的支撑。基于数据的激…