【Python基础】文件读写
文章目录
- @[toc]
- 打开文件
- `open()`函数参数解析
- 示例
- 文件路径
- 绝对路径
- 示例
- 相对路径
- 示例
- 打开文件的模式
- 常用模式
- 读文件
- 示例
- 写文件
- 示例
- 按行读写文件
- `readline()`
- 示例
- `readlines()`
- 示例
- `writelines()`
- 示例
- 关闭文件
- 示例
- `finally`语句
- 示例
- 上下文管理器
- 示例
- 自定义读写类
- 示例
文章目录
- @[toc]
- 打开文件
- `open()`函数参数解析
- 示例
- 文件路径
- 绝对路径
- 示例
- 相对路径
- 示例
- 打开文件的模式
- 常用模式
- 读文件
- 示例
- 写文件
- 示例
- 按行读写文件
- `readline()`
- 示例
- `readlines()`
- 示例
- `writelines()`
- 示例
- 关闭文件
- 示例
- `finally`语句
- 示例
- 上下文管理器
- 示例
- 自定义读写类
- 示例
打开文件
- 在
Python
中,打开文件使用的是open()
函数,open()
函数的基本语法如下
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
open()
函数参数解析
file
:要打开的文件路径,可以是绝对路径也可以是相对路径mode
:打开文件的模式,默认为r
,表示以只读模式打开文件buffering
:缓冲策略,是一个可选参数,默认值为None
,表示使用系统默认的缓冲策略- 取值为 0 0 0或
False
时,表示不进行缓冲,直接从磁盘读取或写入文件 - 取值为 1 1 1或
True
时,表示行缓冲,即每写入一行数据时,将其写入文件 - 取值为大于 1 1 1的整数时,表示缓冲区的大小,以字节为单位,指定缓冲区大小可以提高文件的读取和写入效率
- 取值小于 0 0 0时,使用系统默认的缓冲策略
- 取值为 0 0 0或
encoding
:文件编码,是一个可选参数,默认值为None
,表示使用系统默认编码,常用编码包括'utf-8'
、'gbk'
等errors
:编码错误处理方案,是一个可选参数,默认值为None
,表示使用系统默认的错误处理方案,常用的取值包括'strict'
、'ignore'
、'replace'
等newline
:换行符处理,是一个可选参数,默认为None
,表示使用系统默认的换行符处理方式,常用的取值包括'\n'
、'\r\n'
等closefd
:关闭文件描述符,默认值为True
,表示在关闭文件的同时关闭文件描述符
示例
- 打开
C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】文件读写/test.txt
路径下的文件
file = open('C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】文件读写/test.txt')file_name = file.nameprint(file_name)
C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】文件读写/test.txt
open()
函数返回一个File
对象,表示计算机中的一个文件,读取文件时需要文件已经存在,否则会引发FileNotFoundError
异常
文件路径
- 文件路径是指文件在计算机上的位置,分为绝对路径和相对路径
绝对路径
- 绝对路径是指从根文件夹开始的路径
- 在
Windows
系统下,C
盘、D
盘等为根文件夹,在该盘符中的文件需要从根文件夹开始往下一级一级进行查找 - 在
Linux
系统下,/
为根文件夹,所有文件的查找从/
开始
示例
file = open('C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】文件读写/test.txt')file_name = file.nameprint(file_name)
C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】文件读写/test.txt
相对路径
- 相对路径是指相对于程序当前工作目录的路径,比如存放当前程序的文件夹的绝对路径是
C:/Users/FOLLOW_MY_HEART/Desktop/Python基础/【Python基础】文件读写/
,如果使用相对路径,就可以不写这个路径,用.
代替这个路径值
示例
file = open('./test.txt')file_name = file.nameprint(file_name)
./test.txt
打开文件的模式
open()
函数默认的打开文件的模式为r
,表示以只读模式打开文件
常用模式
模式 | 注释 |
---|---|
r | 只读模式,默认模式 |
w | 只写模式,写入的内容会覆盖文件原有的内容,如果文件不存在会创建文件再进行写入 |
a | 追加模式,在文件末尾追加内容,如果文件不存在会创建文件再进行写入 |
+ | 读写模式,与其他模式组合使用,如r+ ,w+ ,a+ 等 |
x | 创建模式,如果文件已经存在会引发异常 |
t | 文本模式,默认模式 |
b | 二进制模式,用于访问二进制文件,与其他模式组合使用,如rb ,wb ,ab ,rb+ 等 |
读文件
open()
函数返回的是一个File
对象,使用File
对象的read()
方法可以读取文件内容,以字符串类型返回read()
函数语法
read(self, n=-1)
- 参数
n
表示要读取的字符数,默认值为 − 1 -1 −1,表示读取整个文件内容- 取值大于 0 0 0时,读取文件的前 n n n个字符
- 取值等于 0 0 0时,不会读取任何字符,返回空字符串
- 取值小于 0 0 0时,读取整个文件内容
示例
- 在
test.txt
文件中提前写入Hello, world!
,然后执行如下代码
file = open('./test.txt', 'r')res = file.read()print(res)
Hello, world!
写文件
File
对象的write()
方法可以向文件写入内容,返回写入文件的字符串的长度
示例
file = open('./test.txt', 'w')
len = file.write('Hello!')print(len)file = open('./test.txt', 'r')
res = file.read()print(res)
6
Hello!
-
w
模式写入的内容会覆盖文件原有的内容 -
如果想要向文件中追加内容,则使用
a
模式
file = open('./test.txt', 'a')
file.write('\nHello!')file = open('./test.txt', 'r')
res = file.read()print(res)
Hello!
Hello!
- 通过在追加的字符串中使用换行符
\n
,可以实现文件中内容的换行
按行读写文件
readline()
、readlines()
、writelines()
方法用于按行读写文件
readline()
readline()
方法默认情况下读取文件的一行内容,也可以指定在一行中读取的字符数
示例
file = open('./test.txt', 'w')
file.write('Hello, world!\nWelcome!')file = open('./test.txt', 'r')res1 = file.readline()
res2 = file.readline()
res3 = file.readline()print(res1)
print(res2)
print(res3)
Hello, world!Welcome!
- 可以看到,
readline()
方法读取当前文件指针所在的一行中的内容,以换行符\n
区分文件的每一行,如果readline()
方法返回一个空字符串,说明已经读取到文件的末尾
readlines()
readlines()
方法读取文件的每一行内容,返回一个列表,列表中的每个元素就是文件中的每一行内容
示例
file = open('./test.txt', 'w')
file.write('Hello, world!\nWelcome!')file = open('./test.txt', 'r')
res = file.readlines()print(res)
['Hello, world!\n', 'Welcome!']
writelines()
writelines()
方法向文件写入每一行内容,传入一个列表,列表中的每个元素就是写入文件中的每一行内容
示例
file = open('./test.txt', 'w')
len = file.writelines(['Hello, world!\n', 'Welcome!'])file = open('./test.txt', 'r')
res = file.read()print(res)
Hello, world!
Welcome!
关闭文件
- 一般情况下,一个文件对象在退出程序后会自动关闭,但是为了保证数据安全,还是要显示地写一个
close()
方法,用于关闭文件
示例
file = open('./test.txt')file_name = file.nameprint(file_name)file.close()
./test.txt
finally
语句
- 当使用
try
语句发生异常时,即使使用了close()
方法,也可能不被执行 - 可以将
close()
方法放在finally
语句中,从而保证无论程序是否发生异常都会调用close()
方法来关闭文件
示例
file = None
path = './test.txt'try:file = open(path, 'r')
except FileNotFoundError as e:print(e)
finally:if file:print(file.name)file.close()
./test.txt
上下文管理器
Python
中的with
语句可以帮助我们自动调用close()
方法
示例
with open('./test.txt', 'r') as file:file_name = file.nameprint(file_name)
./test.txt
-
as
关键字用于将文件对象赋值给变量file
-
当
with
语句中的代码运行结束时,会自动调用close()
方法
自定义读写类
示例
class OpenFile:def __init__(self, file_name):self.file_obj = file_namedef __enter__(self):self.file_obj = open(self.file_obj, 'r', encoding='utf-8')return selfdef __exit__(self, exc_type, exc_val, exc_tb):self.file_obj.close()def my_read(self):print(self.file_obj.read())with OpenFile('./test.txt') as file:file.my_read()
Hello, world!
Welcome!
- 当被
with
语句调用时会自动触发__enter__()
方法,用于打开文件 - 当
with
语句中的代码运行结束时,会自动触发__exit__()
方法,用于关闭文件 - 自定义读写类展示了上下文管理器的底层实现
相关文章:
【Python基础】文件读写
文章目录 [toc]打开文件open()函数参数解析示例 文件路径绝对路径示例 相对路径示例 打开文件的模式常用模式 读文件示例 写文件示例 按行读写文件readline()示例 readlines()示例 writelines()示例 关闭文件示例finally语句示例 上下文管理器示例 自定义读写类示例 打开文件 …...
电脑风扇控制软件Macs Fan Control mac支持多个型号
Macs Fan Control mac是一款专门为 Mac 用户设计的软件,它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度,以提高设备的散热效果,减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温…...
clangd:Couldn‘t build compiler instance
在使用vscode clangd 搭建RK3588 5.10版本linux内核代码开发环境时,使用bear生成 compile_commands.json时,clangd生成标签失败代码无法跳转,查看clangd日志,发现标签生成失败,失败原因:Couldnt build comp…...
Springboot启动出现Error to process server push response的解决方法
目录 前言1. 问题所示2. 原理分析3. 解决方法前言 注意,此篇博客只提供一种bug排查思路,毕竟每个项目引起的依赖包冲突都不一致! 1. 问题所示 启动Springboot的时候,5秒刷一次这个,大致如下: 2023-12-17 13:02:01.166 WARN 20196 --- [ main] o.s.boot.ac…...
P2P网络下分布式文件共享场景的测试
P2P网络介绍 P2P是Peer-to-Peer的缩写,“Peer”在英语里有“对等者、伙伴、对端”的意义。因此,从字面意思来看,P2P可以理解为对等网络。国内一些媒体将P2P翻译成“点对点”或者“端对端”,学术界则统一称为对等网络(Peer-to-Pee…...
计算机组成原理综合1
1、完整的计算机系统应包括______。D A. 运算器、存储器和控制器 B. 外部设备和主机 C. 主机和实用程序 D. 配套的硬件设备和软件系统 2、计算机系统中的存储器系统是指______。D A. RAM存储器 B. ROM存储器 C. 主存储器 …...
探秘 AJAX:让网页变得更智能的异步技术(下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
CentOs7.x安装部署SeaTunnelWeb遇到的坑
CentOs7.x安装部署SeaTunnelWeb遇到的坑 文章目录 1. 环境2. SeaTunnel安装部署2.1下载安装包2.2 设置环境变量2.3 安装连接器插件2.4 拷贝jar包到lib下2.5 启动命令2.6 执行官方client提交任务demo 3. SeaTunnel-Web安装部署3.1 下载安装包3.2 初始化数据库脚本或修改配置appl…...
Netlink通信
前言 Netlink 是 Linux 内核与用户空间进程之间进行通信的机制之一,一种特殊的进程间通信(IPC) 。它是一种全双工、异步的通信机制,允许内核与用户空间之间传递消息。Netlink 主要用于内核模块与用户空间程序之间进行通信,也被一些用户空间工具用于与内…...
Python打造简单而强大的聊天机器人:详解与实例代码
更多资料获取 📚 个人网站:ipengtao.com 聊天机器人在现代应用中扮演着重要的角色,能够与用户进行自然语言交互。本篇博客将带领读者通过Python,使用自然语言处理库构建一个简单而强大的聊天机器人。我们将深入讨论处理用户输入、…...
Unity 通过代码将一张大图切成多个小图的方法
在Unity 中要通过代码将一张贴图切割成多张小图,可以使用以下方法: /// <summary>/// 把一张图片切割成多张使用/// </summary>/// <param name"texture">原图</param>/// <param name"rows">切割的行…...
Spring Cloud Gateway请求路径修改指南:详解ServerWebExchange的完美解决方案及代码示例
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
AI+爬虫 爬虫宝
场景 在很多时候,有很多爬虫的需求,其实需求都是大同小异,不过是在某某网页上爬取某某东西。把这些东西给到业务。以往的做法是:每一个需求写一个c#或者python脚本或者应用,进行爬取,这相当的费时费力&…...
【matlab】绘制横状双组渐变柱状图
【matlab】绘制横状双组渐变柱状图...
如何下载知网论文、专利的PDF格式
知网的论文格式有其特有的格式:CAJ。将CAJ格式转化为Word或者PDF非常麻烦,且会出现乱码的情况,直接用知网官方的CAJ浏览器也不太方便。为此,困扰了许久。 其实,知网可以直接下载PDF格式,只需在浏览器上安装…...
SMARTFORMS打印问题
一、问题概述 项目中碰到EPSON针式打印机,SAP打印出来的三单合一,是想横向打印,结果不管怎么设置打印出来都是纵向的; 二、调整 1、首先调整SMARTFORMS的打印方向,使用T-CODE:SMARTFORMS,如下图…...
uniapp组件和周期的知识点以及怎么使用
UniApp是一个使用Vue.js开发跨平台应用的框架,它可以将代码编译成微信小程序、支付宝小程序、H5、App等多个平台的应用。在UniApp中,组件是构建应用界面的基本单位,而生命周期则是组件在实例化、挂载、更新和销毁过程中的一系列方法。 以下是…...
【Java JVM】实例对象的创建
当我们涉及 Java 编程时, 对象的创建是一个基础而关键的概念。在 Java 中, 一切皆为对象, 而对象的创建方式直接影响代码的结构和性能。 本博客将探讨一下 Java 实例对象的创建过程。 1 创建对象的方法有哪些 在 Java 中如果要创建一个对象, 有哪些方式呢? 运用 new 关键字创…...
sectigo多域名通配符证书
多域名通配符SSL证书是一种特殊的SSL证书,它综合了多域名SSL证书和通配符SSL证书的特点,可以同时保护多个泛域名以及它的主域名,适合域名多,子域名也比较多的单个或多个站点使用。今天就随SSL盾小编了解Sectigo旗下的DV多域名通配…...
vue 流光边框矩形圆形容器
实现流光边框一般是用渐变背景加动画实现,然后使用内部盒子遮挡内部空间,达到边框流光的效果 思路:背景渐变旋转动画 功能: 自定义渐变(是否渐变<不渐变没有流光效果>,渐变颜色,渐变角…...
明理信息科技打造专属个人或企业知识付费平台,核心功能设计
在当今信息爆炸的时代,知识管理已经成为了每个人必须面对的问题。然而,市面上的知识付费平台大多数都是通用的,无法满足个性化需求。 因此,明理信息科技提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下࿱…...
超结MOS/低压MOS在5G基站电源上的应用-REASUNOS瑞森半导体
一、前言 5G基站是5G网络的核心设备,实现有线通信网络与无线终端之间的无线信号传输,5G基站主要分为宏基站和小基站。5G基站由于通信设备功耗大,采用由电源插座、交直流配电、防雷器、整流模块和监控模块组成的电气柜。所以顾名思义…...
字节8年经验之谈 —— 如何从0开始做自动化测试?
自动化测试是使用软件工具在应用程序上自动运行测试的过程,无需任何人为干预。这可以通过减少手动测试的需要来保存时间并提高软件开发过程的效率。由于人为错误或不一致性,手动测试可能容易出错,这可能导致错误未被检测到。自动化测试通过提…...
深入探索Zookeeper的ZAB协议:分布式系统的核心解析
引言 自我进入软件开发领域以来,我一直对分布式系统充满着浓厚的兴趣。在这个领域中,Zookeeper无疑是一个备受关注的重要组件。作为一名资深的Java工程师,我有幸深入探索过Zookeeper的许多方面,其中最让我着迷的部分莫过于其核心机…...
安捷伦Agilent 34970A数据采集
易学易用 从34972A简化的配置到内置的图形Web界面,我们都投入了非常多的时间和精力,以帮助您节约宝贵的时间。一些非常简单的东西,例如模块上螺旋型端子连接器内置热电偶参考结、包括众多实例和提示的完整用户文档,以及使您能够在开机数分钟后…...
Apache Flume(5):多个agent模型
可以将多个Flume agent 程序连接在一起,其中一个agent的sink将数据发送到另一个agent的source。Avro文件格式是使用Flume通过网络发送数据的标准方法。 从多个Web服务器收集日志,发送到一个或多个集中处理的agent,之后再发往日志存储中心&…...
如何在Ubuntu系统中安装VNC并结合内网穿透实现远程访问桌面
文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…...
JaCoCo 统计度量
1、JaCoCo: 一个判断算2个Branch,最后一个括号算一行 2、IDEA:一个判断算一个Branch,最后一个括号不算一行...
我们经常使用的AI技术
窄人工智能 Narrow AI 窄人工智能主要集中于处理相对单一的任务,可以理解,科学家在研究如何模拟人类智能时,一种思路就是我们是不是可以先分别模拟人的不同能力,例如我们的视觉能力,文字识别能力等等。所以就演化出针…...
静态路由及动态路由
文章目录 静态路由及动态路由一、静态路由基础1. 静态路由配置2. 负载分担3. 路由备份4. 缺省路由5. 静态路由实操 二、RIP 动态路由协议1. RIP 协议概述2. RIP 协议版本对比2.1 有类路由及无类路由 3. RIP 路由协议原理4. RIP 计时器5. 度量值6. 收敛7. 示例 静态路由及动态路…...
公司做的网站搜索不到/泉州关键词快速排名
转载于:https://www.cnblogs.com/future-dream/p/9980295.html...
临清建网站/百度下载安装最新版
文章来源: 学习通http://www.bdgxy.com/我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。 这种类型的检索例子有以下几种: 确…...
谷歌seo和sem/温州网站优化推广方案
C#基础知识梳理系列索引 摘 要这个系列,将从山脚写到山腰。由于鄙人知识匮乏,不敢奢望攀登山顶。 C# Target Runtime: v4.0.30319 系列索引C#基础知识梳理系列一:CLR及程序集部署 C#基础知识梳理系列二:C#的演绎大师:类…...
wordpress blod/百度网址大全简单版
执行 bgrewriteaof 命令 子线程就记录当前内存的数据作为命令内容保存到新的 aof 文件, 期间的写操作会记录到 aof buf, 当记录都保存到 aof 文件后, 再把 aof buff 命令写入. 最后, 替换掉旧的 aof 文件...
建设网站需要招聘哪些人/做网销的一天都在干嘛
1.(2.0分) Excel 2010主界面窗口中编辑栏上的"fx"按钮用来向单元格插入________。? A、文字? B、数字? C、公式? D、函数正确答案:D2.(2.0分) Excel窗口的“编辑区”,最左边的“名称框”中,显示的是活动单元格的()。? A、内容…...
vs和dw做网站的区别/怎么制作一个网站
最近3d相册可谓是很火,小编的朋友圈就被刷屏了。再加上后台很多小可爱留言说想要关于3d旋转相册,但是大多数人又不会编程,代码什么的敲敲打打太费劲了,考虑到这些,小编找朋友做了这个相册的代码,一共有两个…...