Python之文件的读写

article/2025/8/8 7:20:46

文章目录

  • 前言

  • 一、打开和关闭文件(open和close)

    • 1.打开文件

    • 2.关闭文件

    • mode的方式

    • 几种读取文件的函数

    • 写入文件的函数

  • 二、with…open…as操作文件

    • 1、with…open…as与open......close的区别

  • 总结


前言

本篇文章讲解,平时读写文件的基本用法


一、打开和关闭文件(open和close)

语法:
open(file, mode, encoding=None)

讲解字段含义:

file:文件(其实是一个具体文件的路径)

例如:

在D盘我创建了一个名为:qhj.txt的文件,那么file就应该是:D:\study\qhj.txt

mode:打开文件的方式(以什么样的方式打开这个文件)

encoding:编码(以什么样的方式来编码)

1.打开文

 字段讲解:

r"D:\study\qhj.txt" :也就是file

"r" :也就是mode

encoding="utf-8" :也就是encoding=None,只不过这个传了具体值"utf-8",所以不再是默认的None

注意:其实上面这种方式是一种省略的方式写法,可能对于初学者有点疑惑,为什么r"D:\study\qhj.txt"的前面,"r"的前面没有一个参数,而"utf-8"前面就有encoding呢?

其实我们还原最基本的(标准的)写法就明白了。

2.关闭文件

语法:file.close() #注意:这里的file是一个对象,使用对象调出函数,来操作关闭。

举例:


mode的方式:

以读为主

r

以只读方式打开文件。指针将会放在文件的开头(这是默认模式);

read  只能读不能写,文件不存在的时候会报错

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

读写模式  文件不存在的时候会报错   可读可写,但是写的有问题(在最前方写,因为指针在0处)

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。



以写为主

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。(也就是写入的内容把原有的内容的覆盖了);

write 文件不存在的话,给创建,不能读,写之前会清空原来的文件内容

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件;

写读模式   文件不存在的时候给创建  清空文件内容,然后在写

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

以追加为主

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

追加模式  不会清空原来的内容 追加写,但是不能读

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

追加模式   文件不存在的时候给创建  可读可写  ,追加写,但是读不到内容(因为指针在末尾,所以读不到)

ab+

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

注意:这些字母可能有些不好记,那么可以还原成英语单词来记忆:

r 的单词意思是:read  

w 的单词意思是:write

a 的单词意思是:append

b 的单词意思是:binary(二进制)


几种读取文章的函数:

readlines() :读取所有行,以列表的形式返回读取内容,列表的每一个元素对应文件的一行

readline():按行读取文件的内容,换行符号 ‘\n’

read([size]):默认读取全部文件内容,如果有size参数,则读取前size个字节数

举例:

(1)读取文件的全部数据

(2)只读取单行的数据

(3)如果我们要读取几行数据,那么就要多调几次readline()函数

 (4)按照每一行读取(默认放入列表中)

(5)读取前4个字符


 写入文件的函数:

write("写入文件的内容")

(1)j.txt为新建的空文件

(2)j.txt不为空文件时。(这个时候的写入就要把里面的原来有的数据覆盖----相当于清空之前的数据)

(3)以追加的方式写入。

当原来的文件里面没有数据的时候(相当于一般的写入):

当原来的文件里面有数据的时候(追加的写入):

 

二、with…open…as操作文件

1、with…open…as与open......close的区别: 

1)open......close 这种结构,在打开文件后,经过数据的一系列操作后,需要调函数close()来关闭文件

2)with…open…as 不需要调close()函数来关闭文件

语法:

with  open(file,mode,encoding) as file:

        这里面是要操作的东西

另外一个区别:

open......close:这是因为文件操作是一个I/O操作,当我们写文件时,操作系统往往不会立即把数据写入到磁盘,而是先放到内存缓存起来,等空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘同时释放资源。如果不这样做的话,可能造成数据丢失和资源浪费。

我们知道代码的执行是从上到下按行执行,但是如果open以下close之上的代码某一行出错了呢,那是不是不能执行close()这个函数了。为了防止这个问题发生,所以就有了with…open…as。不管中间的代码是否有错,最后都会关闭文件。

举例:

可以参考一位优秀的博主文章:

python中的文件读写操作open和with的用法 - 码农教程

python之文件操作(open与with...open...as)_搬砖,赞路费的博客-CSDN博客

               

总结

以上就是今天要讲的内容,本文仅仅简单介绍了open...close和with....open....as的基本使用和区别。


http://chatgpt.dhexx.cn/article/kOsAnPf2.shtml

相关文章

一文搞懂Python文件读写

在使用python编程时,经常会遇到读写文件的操作。 很多童鞋困扰于读写文件的各种模式(如阅读、写入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。 这篇文章就是要告诉你Python文件读写的所有秘密&a…

Python文件读写

在使用python编程时,经常会遇到读写文件的操作。 很多童鞋困扰于读写文件的各种模式(如阅读、写入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。 这篇文章就是要告诉你Python文件读写的所有秘密&a…

python入门之文件的读写

1、python文件读写的方式 文件读写就是一种常见的IO操作。python封装了操作系统的底层接口,直接提供了文件读写相关的操作方法;文件读写不需要额外引入第三方库; 一个文件读写的步骤: 1、从硬盘中读取一个文件路径 2、加载文件到…

python写入文件没反应_Python 文件读写

&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 预备知识 Python 入门 学习处理文件和保存数据可让你的程序使用起来更容易:用户将能够选择输入什么样的数据,以及在什么时候输入; 用户使用你的程序做一些工作后&#…

一文解决 Python读取文件的全部知识

文件是无处不在的,无论我们使用哪种编程语言,处理文件对于每个程序员都是必不可少的 文件处理是一种用于创建文件、写入数据和从中读取数据的过程,Python 拥有丰富的用于处理不同文件类型的包,从而使得我们可以更加轻松方便的完成…

python 文件读取

读取整个文件 操作文件的第一步就是得打开要操作的文件,然后进行读取。在python中我们可以使用open函数来打开一个文件,然后使用read方法来读取文件。 示例: import oswith open(data.txt, encodingutf-8) as file_obj:contents file_obj…

matlab中如何对一个小数取整,学习笔记153—matlab中小数如何取整?

matlab中小数取整的函数大约有四个:floor、ceil、round、fix 1、round取整方法是四舍五入 round函数功能:四舍五入取整。 使用方法:B round(A) 对数组A中每个元素朝最近的方向取整数部分,并返回与A同维的整数数组B,对…

建立一个植物毒性分类器:数据准备和清理

作者|Kenichi Nakanishi 编译|VK 来源|Towards Data Science 我有一个爱买植物的未婚妻,还有一只爱啃植物的猫——我想,有什么比把一个能告诉我植物是否安全的分类器更好呢! 需要注意的一点是,这里所做的所有工作都是在google colabs上完成的,使用的notebook可以在我的Gi…

我在百度Python小白逆袭大神课程中“打怪”欢乐之旅

本文描述了作者在参加百度Python小白逆袭大神课程一些亲身经历,从开始的半信半疑,到最后坚定的革命信念,给没有参加过百度课程的同学一点参考,文中有高质量的数据分析、pyecharts动态图,深度学习相关代码分享&#xff…

彻底解决Chrome浏览器劫持后显示“由贵单位管理(Managed by your organization)” 的解决办法

声明: Declaration: 由于网络中的病毒virus/malware等存在随时变异或者对应多种感染方式等情况,本文所针对的处理方法仅针对本次样本负责,个人如有误操作,后果自负。如需帮助,可以关注我的公众号&#xff…

Python sklearn学习之数据预处理——非线性转换

Python sklearn学习之数据预处理——非线性转换 文章目录 Python sklearn学习之数据预处理——非线性转换1. 两种常见的非线性转换1.1 分位数转换1.2 幂变换 2. sklearn中非线性变换的实现2.1 映射到均匀分布2.1.1QuantileTransformer类 2.2 映射到高斯分布2.2.1 Yeo-Johnson t…

javaScript学习笔记【尚硅谷】

javaScript学习笔记【尚硅谷】 这是我在看尚硅谷的前端大神超哥视频时,所记录的笔记! 文章目录 javaScript学习笔记【尚硅谷】[TOC](文章目录)1、javaScript基本知识1.2、JS编写位置1.3、JS基本语法1.4、变量与字面量1.5、标识符1.6、数据类型1.6.1、Nu…

机器学习流程及详细内容(1)

一般流程:数据收集、整理→数据预处理与特征工程(数据清理、集成、规约、变换、特征提取、筛选)→模型的选择与建立→模型的评估与优化。 数据收集 既可以使用公开的数据集,也可通过爬虫、购买或者实时数据的方式自己收集。 UC…

机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

《Brief History of Machine Learning》 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、Deep Learning. 《Deep Learning in Neural Networks: An Overview》 介绍:这是瑞士人工智能实验室Jurg…

Flutter 学习

Flutter 学习 参照:https://book.flutterchina.club/ 参照:https://flutter.cn/docs/development/platform-integration/platform-channels?tabtype-mappings-java-tab 目前进度:https://book.flutterchina.club/chapter9/animated_widgets…

原生开发如何学习 Flutter | 谷歌社区说

Hello 大家好,我是《Flutter 开发实战详解》的作者,Github GSY 系列开源项目的负责人郭树煜,目前开源的 gsy_github_app_flutter 以 13k 的 star 在中文总榜的 dart 排行上暂处第一名。 数据来源: https://github.com/GrowingGit/…

【CVRP】基于matlab遗传算法求解带容量的车辆路径规划问题【含Matlab源码 162期】

⛄一、VRP简介 车辆路径问题(VRP)最早是由 Dantzig 和 Ramser 于1959年首次提出,它是指一定数量的客户,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行…

matlab解决LRP类型的多配送中心路径优化问题

** 问题描述 ** 有关多配送中心的选址-路径优化问题,一般是通过基于区域内的客户需要求,对配送中心进行合理的选址以及配送中心的车辆调度以及路径优化。在给出的配送中心候选点位置已知,需要在给出的这些位置中,通过与顾客需求…

<代码分享> 一种无人机配合卡车配送的车辆路径规划模型

本文为本人博客《一种无人机配合卡车配送的车辆路径规划模型》的代码分享。 由于近期此文的关注者较多,代码分享较为不便,因此决定专门写一篇博客以提供源码。 感谢各位博友关注,本人能力有限,如有错误,还请及时批评指…

(附源码)springboot车辆管理系统 毕业设计031034

车辆管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中&…