1、文件操作步骤

当我们要读取或者写入文件时,我们需要打开文件,在操作完毕时,我们需要关闭文件,以便释放和文件操作相关的系统资源。因此,文件操作的主要包括以下:

  1. 打开文件。
  2. 读写等操作。
  3. 关闭文件。

注意:可以只打开和关闭文件,不进行任何读写操作。

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+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

说明:

  • 主要的三种打开模式为rwa

    • 凡事带+都是可读可写模式。
    • 凡事带b的都是以二进制格式打开文件。
    • 所有的访问模式的基础特点都要遵循三种猪访问模式rwa
  • x 模式

    x 模式用来新建文件,如果文件不存在则创建,存在则报错。

    如果想创建一个文件,不想覆盖已有的文件,就可以选择这个操作文件的方式。
  • bt
    • 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_objopen( )函数返回的文件对象。

只要没有报错,就证明文件打开了。

当我们获取了文件对象以后,所有的对文件的操作都应该通过对象来进行。

(4)关于文件路径

  • 如果目标文件和当前文件在同一级目录下,则直接使用文件名即可。
  • 可以使用..来返回一级目录,也就是上一级目录。
  • 在windows系统使用路径时,可以使用/来代替\,在Python中会自动转换,

    或者可以使用 \\ 来代替 \

    或者也可以使用原始字符串,如file_name = r'hello\demo.txt'

    也就是在字符串前面加上一个小写的r,是字符串原样输出,不加任何转义。
  • 如果目标文件距离当前文件比较远,此时可以使用绝对路径。

    绝对路径应该从磁盘的根目录开始书写,如file_name = r'C:\Users\123\Desktop\hello.txt'

『无为则无心』Python基础 — 41、Python中文件的读写操作(一)的更多相关文章

  1. 『无为则无心』Python基础 — 3、搭建Python开发环境

    目录 1.Python开发环境介绍 2.Python解释器的分类 3.下载Python解释器 4.安装Python解释器 5.Python解释器验证 1.Python开发环境介绍 所谓"工欲 ...

  2. 『无为则无心』Python基础 — 4、Python代码常用调试工具

    目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...

  3. 『无为则无心』Python基础 — 6、Python的注释

    目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...

  4. 『无为则无心』Python基础 — 7、Python的变量

    目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...

  5. 『无为则无心』Python基础 — 10、Python字符串的格式化输出

    目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...

  6. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...

  7. 『无为则无心』Python基础 — 44、对文件和文件夹的操作

    目录 1.os模块介绍 2.查看os模块相关文档 3.os模块常用方法 (1)文件重命名 (2)删除文件 (3)创建文件夹 (4)删除文件夹 (5)获取当前目录 (6)改变默认目录 (7)获取目录列表 ...

  8. 『无为则无心』Python序列 — 18、Python列表概念及常用操作API

    目录 1.列表的概念 (1)列表的定义 (2)列表的应用场景 (3)列表的定义格式 2.列表的常用操作 (1)列表的查找 1)通过下标查找 2)通过方法查找 3)判断是否存在 (2)列表的增加 @1. ...

  9. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

随机推荐

  1. 【LeetCode】560. Subarray Sum Equals K 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  2. hdu-1421搬寝室(dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=1421; 思路:先将所给的椅子的价值按升序排列,举个例子,四张椅子的价值分别为a,b,c,d(a<b< ...

  3. bootstrap datetimepick 时分秒选择,坑我15个小时,整理记录

    官网的datetimepick 下载链接 官网下载 <input type="text" readonly name="feedDay" id=" ...

  4. Linux Cgroups详解(一)

    [转载]http://blog.chinaunix.net/uid-23253303-id-3999432.html Cgroups是什么? Cgroups是control groups的缩写,是Li ...

  5. Gradient-based Hyperparameter Optimization through Reversible Learning

    目录 概 主要内容 算法 finite precision arithmic 实验 Maclaurin D, Duvenaud D, Adams R P, et al. Gradient-based ...

  6. [云原生]Kubernetes - 集群搭建(第2章)

    目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...

  7. Java EE数据持久化框架 • 【第5章 MyBatis代码生成器和缓存配置】

    全部章节   >>>> 本章目录 5.1 配置MyBatis Generator 5.1.1 MyBatis Generator介绍 5.1.2 MyBatis Generat ...

  8. 云南农职《JavaScript交互式网页设计》 综合机试试卷⑥——简易旅游网

    本页面分为顶部导航.登录注册栏,中部图片展示.主体内容和底部反馈模板 一.导航栏部分 要求一:设置菜单栏(二级菜单)和登录注册模块 要求二:当鼠标悬停到菜单栏(一级菜单)时,二级菜单以滑动效果滑出显示 ...

  9. Java初学者作业——编写JAVA程序,计算跳水运动员本次动作的最终得分。

    返回本章节 返回作业目录 需求说明: 编写JAVA程序,计算跳水运动员本次动作的最终得分. 规则如下: 在跳水比赛中,共有六位裁判对运动员所完成的动作进行评分,每位裁判的评分在0-10之间,运动员最终 ...

  10. 编写Java程序_找星座朋友应用软件

    一.About the Project 项目介绍 自古以来,人对于恒星的排列和形状很感兴趣,并很自然地把一些位置相近的星联系起来,组成星座.占星术亦称"占星学"."星占学 ...