『无为则无心』Python基础 — 41、Python中文件的读写操作(一)
1、文件操作步骤
当我们要读取或者写入文件时,我们需要打开文件,在操作完毕时,我们需要关闭文件,以便释放和文件操作相关的系统资源。因此,文件操作的主要包括以下:
- 打开文件。
- 读写等操作。
- 关闭文件。
注意:可以只打开和关闭文件,不进行任何读写操作。
2、文件的读写操作
(1)文件的打开
在Python中,使用open( )
函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
# 文档中语法如下
open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)
# 我们可以看到这个open( )函数有很多的参数
# 但是我们也可以看到处了第一个参数,其他的都是关键字参数
# 也就是说,除了第一个必填,其他的都可以不填写。
# 但是我们在实际开发中,比较常用的就是前两个选项。
open(name, mode)
name
:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。mode
:设置打开文件的模式(访问模式),只读、写入、追加等。
(2)打开文件模式
在Python中,文件的打开模式如下表:
模式 | 描述 |
---|---|
r |
以只读方式打开文件。文件的指针将会放在文件的开头(相当于光标所在的位置)。这是默认模式。 |
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ |
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w |
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。(文件指针在开头,覆盖文件) |
wb |
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ |
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ |
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a |
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。(文件指针在内容的结尾处,方便追加内容) |
ab |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ |
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
说明:
- 主要的三种打开模式为
r
、w
、a
。
- 凡事带
+
都是可读可写模式。- 凡事带
b
的都是以二进制格式打开文件。- 所有的访问模式的基础特点都要遵循三种猪访问模式
r
、w
、a
。x
模式
x
模式用来新建文件,如果文件不存在则创建,存在则报错。
如果想创建一个文件,不想覆盖已有的文件,就可以选择这个操作文件的方式。b
和t
t
是以纯文本方式打开文件,默认就是t
。b
是以二进制方式打开文件。
关于打开文件模式的官方文档,在[The Python Standard Library] —> [Built-in Functions] —> 内置方法列表中选择[open()]。
文档内容如下图所示:
(3)获取一个文件对象
也就是打开一个文件。
# open()函数返回一个对象,这个对象就代表了当前打开的文件。
# file_obj是一个文件对象,文件打开状态
file_name= 'test.txt'
file_obj = open(file_name, 'r')
# <class '_io.TextIOWrapper'>
print(type(file_obj))
# <_io.TextIOWrapper name='test.txt' mode='r' encoding='cp936'>
print(file_obj)
注意:此时的
file_obj
是open( )
函数返回的文件对象。
只要没有报错,就证明文件打开了。
当我们获取了文件对象以后,所有的对文件的操作都应该通过对象来进行。
(4)关于文件路径
- 如果目标文件和当前文件在同一级目录下,则直接使用文件名即可。
- 可以使用
..
来返回一级目录,也就是上一级目录。 - 在windows系统使用路径时,可以使用
/
来代替\
,在Python中会自动转换,
或者可以使用\\
来代替\
,
或者也可以使用原始字符串,如file_name = r'hello\demo.txt'
。
也就是在字符串前面加上一个小写的r
,是字符串原样输出,不加任何转义。 - 如果目标文件距离当前文件比较远,此时可以使用绝对路径。
绝对路径应该从磁盘的根目录开始书写,如file_name = r'C:\Users\123\Desktop\hello.txt'
『无为则无心』Python基础 — 41、Python中文件的读写操作(一)的更多相关文章
- 『无为则无心』Python基础 — 3、搭建Python开发环境
目录 1.Python开发环境介绍 2.Python解释器的分类 3.下载Python解释器 4.安装Python解释器 5.Python解释器验证 1.Python开发环境介绍 所谓"工欲 ...
- 『无为则无心』Python基础 — 4、Python代码常用调试工具
目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...
- 『无为则无心』Python基础 — 6、Python的注释
目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...
- 『无为则无心』Python基础 — 7、Python的变量
目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
- 『无为则无心』Python基础 — 12、Python运算符详细介绍
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...
- 『无为则无心』Python基础 — 44、对文件和文件夹的操作
目录 1.os模块介绍 2.查看os模块相关文档 3.os模块常用方法 (1)文件重命名 (2)删除文件 (3)创建文件夹 (4)删除文件夹 (5)获取当前目录 (6)改变默认目录 (7)获取目录列表 ...
- 『无为则无心』Python序列 — 18、Python列表概念及常用操作API
目录 1.列表的概念 (1)列表的定义 (2)列表的应用场景 (3)列表的定义格式 2.列表的常用操作 (1)列表的查找 1)通过下标查找 2)通过方法查找 3)判断是否存在 (2)列表的增加 @1. ...
- 『无为则无心』Python序列 — 24、Python序列的推导式
目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...
随机推荐
- c++内存分布之纯虚函数
关于 本文演示环境:VS2017+32位程序. 纯虚函数是一种特殊的虚函数.可以预测到:虚函数的结论同样适用纯虚函数,但是纯虚函数是一种特殊的存在,还是看看实际结果. 代码写的不够规范: 因为任何带虚 ...
- 【LeetCode】212. Word Search II 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 前缀树 日期 题目地址:https://leetco ...
- 【LeetCode】520. Detect Capital 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 循环判断三个条件 大写字母个数和位置判断 根据首字符 ...
- 【LeetCode】695. Max Area of Island 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:DFS 方法二:BFS 日期 题目地址:ht ...
- 【剑指Offer】二叉搜索树与双向链表 解题报告(Python)
[剑指Offer]二叉搜索树与双向链表 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interview ...
- idea使用教程-常用设置
[1]进入设置: [2]设置主题: [3]编辑区的字体变大或者变小: [4]鼠标悬浮在代码上有提示: [5]自动导包和优化多余的包: 手动导包:快捷键:alt+enter 自动导包和优化多余的包: [ ...
- ZooKeeper基础知识总结
数据模型 ZooKeeper数据模型是一个树状的数据结构,类似于文件系统:和文件系统的区别在于树中的每一个节点(叶子节点与非叶子节点)都可以保存数据,且每个节点的访问都必须从根节点开始,以斜线作为分隔 ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
- .NET5.0 依赖注入,关于 Autofac 使用
前置 工具 VS2019 概念 关于以下几个概念,自行百度. 控制反转:IoC(Inversion of Control) 依赖注入: 容器:DI 容器(.NET Core 自带),Autofac(本 ...
- 使用.NET 6开发TodoList应用(17)——实现数据塑形
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在查询的场景中,还有一类需求不是很常见,就是在前端请求中指定返回的字段,所以关于搜索的最后一个主题我们就来演示一下关于数据塑形 ...