Python读写文件
最近得以空闲,然后继续学习py。
学习一下py中最频繁用到的文件读写的方法。
在py中,操作是通过文件对象【File obj】实现的,通过文件对象可以读写文本文件和一些二进制文件。
1.打开文件
使用Python中的open函数。有8个参数,但是我们常用的就2个足够了。
# 使用所有参数打开文件
with open('example.txt', mode='r', buffering=1, encoding='utf-8', errors='ignore', newline='\n', closefd=True, opener=None) as f:# 读取文件内容content = f.read()print(content)
- file参数
如果是字符串,则代表的是文件名字,文件名字可以是相对当前目录的路径,也可以是绝对路径;如果是一个整数,则代表文件描述符,文件描述符指向一个打开的文件。 - mode参数
下面是常用的文件打开模式:
-
只读模式 (
r
):- 描述:以只读模式打开文件。文件指针将会放在文件的开头。如果文件不存在,会抛出
FileNotFoundError
异常。 - 示例:
open('filename.txt', 'r')
- 描述:以只读模式打开文件。文件指针将会放在文件的开头。如果文件不存在,会抛出
-
写入模式 (
w
):- 描述:以写入模式打开文件。文件指针会放在文件的开头。如果文件不存在,会创建一个新文件。如果文件存在,会截断文件(即清空文件内容)。
- 示例:
open('filename.txt', 'w')
-
追加模式 (
a
):- 描述:以追加模式打开文件。文件指针会放在文件的末尾。如果文件不存在,会创建一个新文件。如果文件存在,写入的数据将会追加到文件的末尾。
- 示例:
open('filename.txt', 'a')
-
读写模式 (
r+
):- 描述:以读写模式打开文件。文件指针会放在文件的开头。如果文件不存在,会抛出
FileNotFoundError
异常。 - 示例:
open('filename.txt', 'r+')
- 描述:以读写模式打开文件。文件指针会放在文件的开头。如果文件不存在,会抛出
-
写入读模式 (
w+
):- 描述:以写入读模式打开文件。文件指针会放在文件的开头。如果文件不存在,会创建一个新文件。如果文件存在,会截断文件。
- 示例:
open('filename.txt', 'w+')
-
追加读模式 (
a+
):- 描述:以追加读模式打开文件。文件指针会放在文件的末尾。如果文件不存在,会创建一个新文件。如果文件存在,写入的数据将会追加到文件的末尾。可以进行读写操作。
- 示例:
open('filename.txt', 'a+')
-
二进制模式 (
b
):- 描述:以二进制模式打开文件。可以与上述模式组合使用,例如
rb
、wb
、ab
、r+b
等。用于读取或写入二进制文件,如图片、音频等。 - 示例:
open('filename.bin', 'rb')
- 描述:以二进制模式打开文件。可以与上述模式组合使用,例如
-
文本模式 (
t
):- 描述:以文本模式打开文件。默认模式,可以与上述模式组合使用,例如
rt
、wt
、at
、r+t
等。用于读取或写入文本文件。 - 示例:
open('filename.txt', 'rt')
- 描述:以文本模式打开文件。默认模式,可以与上述模式组合使用,例如
示例代码
以下是一些打开文件的示例代码:
# 以只读模式打开文本文件
with open('example.txt', 'r', encoding='utf-8') as f:content = f.read()# 以写入模式打开文本文件
with open('example.txt', 'w', encoding='utf-8') as f:f.write("Hello, World!")# 以追加模式打开文本文件
with open('example.txt', 'a', encoding='utf-8') as f:f.write("Appending some text.")# 以二进制模式打开文件
with open('example.bin', 'rb') as f:binary_content = f.read()# 以读写模式打开文件
with open('example.txt', 'r+', encoding='utf-8') as f:f.write("Read and write.")f.seek(0)content = f.read()
2.关闭文件
当使用了open打开文件之后,要记得写关闭文件,否则会抛异常。
常规就是调用一次open,然后尾部写一下close。
但是一般情况下,文件的操作往往会抛出异常,为了保证文件的操作无论正常结束还是异常结束都能够关闭文件,使用with as 代码块来进行自动资源管理。
import unittestclass MyTestCase(unittest.TestCase):def test_something(self):# self.assertEqual(True, False) # add assertion here# print("hello world")fobj = open("test.txt", "w+",encoding="utf-8")fobj.write("hello world")fobj.close()with open("test.txt", "a+",encoding="utf-8") as f:f.write("\n大家好~")if __name__ == '__main__':unittest.main()
这样子执行的话,就是创建了一个文件,往里面写入了一句话。
注意
- 文件有编码的,需要指定
- 用完要关闭
相关文章:
Python读写文件
最近得以空闲,然后继续学习py。 学习一下py中最频繁用到的文件读写的方法。 在py中,操作是通过文件对象【File obj】实现的,通过文件对象可以读写文本文件和一些二进制文件。 1.打开文件 使用Python中的open函数。有8个参数,但…...

docker-如何将容器外的脚本放入容器内,将容器内的脚本放入容器外
文章目录 前言docker-如何将容器外的脚本放入容器内,将容器内的脚本放入容器外、1. docker 如何将容器外的脚本放入容器内1.1. 验证 2. 将容器内的脚本放入容器外 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊&…...
算法训练营第三十九天 | LeetCode 738 单调递增的数字、LeetCode 968 监控二叉树
LeetCode 738 单调递增的数字 这题类似模拟,可以找出如下规律: 先将数字按位数从高位到低位存到一个整型数组中。在这个数组中,从左往右遍历,如果遇到一个两数相等,并且记录的这个变量之前没有赋过值,那么…...
Hive语法学习总结
Hive SQL语法学习总结 hive参数库操作1.创建库2.具体案例3.库的其他操作 表和库的路径演示表的操作创建表插入数据 hive参数 一 hive常用交互命令hive -e sql语句hive -f sql文件 //文件中是sql语句二 参数的设置方式一:在客户端中设置参数(当次有效)set 参数名参…...

【Linux】TCP协议【中】{确认应答机制/超时重传机制/连接管理机制}
文章目录 1.确认应答机制2.超时重传机制:超时不一定是真超时了3.连接管理机制 1.确认应答机制 TCP协议中的确认应答机制是确保数据可靠传输的关键部分。以下是该机制的主要步骤和特点的详细解释: 数据分段与发送: 发送方将要发送的数据分成一…...

solidworks画螺母学习笔记
螺母 单位mm 六边形 直径16mm,水平约束,内圆直径10mm 拉伸 选择两侧对称,厚度7mm 拉伸切除 画相切圆 切除深度7mm,反向切除 拔模角度45 镜像切除 倒角 直径1mm 异形孔向导 螺纹线 偏移打勾,距离为2mm…...

WebGL的医学培训软件开发
开发基于WebGL的医学培训软件是一项复杂且技术性强的任务,需要结合医学专业知识和计算机图形学技术。以下是详细的开发流程和关键步骤。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.需求分析与定义 目标用户…...

新时代AI浪潮下,程序员和产品经理如何入局AIGC领域?
当下,AI浪潮席卷全球,AIGC大模型技术已经成为当今技术领域的一个重要趋势,对于产品经理来说,掌握这项技术不仅能够增强他们的职业技能,还能在竞争激烈的职场中脱颖而出。 为什么呢? 把握AI时代的机遇 AI技…...

OWASP top10--SQL注入(一)
SQL注入式攻击技术,一般针对基于Web平台的应用程序.造成SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时,没有对浏览器端提交的参数进行严格的过滤和判断。用户可以修改构造参数,提交SQL查询语句,并传递至服务器端…...
java —— 类与方法
一、访问修饰符 在类和方法中,均可使用访问修饰符以锁定该类或方法的被访问权限。访问修饰符有四种: (一)public 同一个项目中,对所有的类可见。 (二)protected 同一个项目中,对…...
【MySQL精通之路】InnoDB-启动选项和系统变量
系统变量可以在服务器启动时设置TRUE或FALSE启用禁用,也可以通过使用--skip前缀来禁用 例如: 要启用或禁用InnoDB自适应哈希索引,可以在命令行中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index,或者在配置…...
嵌入式linux系统中文件系统制作方法详解
第一:制作目的 1、掌握嵌入式Ubuntu系统的构建方法 2、熟悉嵌入式Ubuntu文件系统映射压缩打包方法 3、掌握RK3399linux系统单文件系统更新方法 Ubuntu根文件系统制作完成之后,把制作好的ubuntu文件系统映射文件在出厂系统的基础上替换原有的ubuntu根文件系统,即对 Linux 系统…...
AI爆文写作:要写文章爆,这47个爆文前缀少不了!
47个爆文前缀:很震惊很好用 这些前缀,虽然被用了无数次,但每个人看到还是会忍不住点进去。 可以借鉴这样强情绪的句式。 序号前缀1就在刚刚…2真相曝光…3震惊国人…4惊天秘密…5疯狂转发…6删前速看…7千万别吃…8还敢喝吗…9癌症前兆…10赶快扔了…11太可怕了…12大事不…...

javas-core VS java-object-diff
对照工具选择 javas-core 和 java-object-diff ,对比demo https://github.com/kofgame/objectdiff-vs-javers,都为同源对比,都支持嵌套对象。 使用JMH测试方法进行性能测试,使用题库的QuestionResponseVO对象来进行对照对比,进行…...
dirsearch指令大全
文章目录 基本用法主要参数和选项目标和URL设置--url URL--url-list FILE 扩展名--extensions EXTENSIONS 字典文件--wordlists WORDLIST 线程和性能--threads THREADS--timeout SECONDS--delay MILLISECONDS 忽略状态码代理和请求设置--proxy PROXY--headers HEADERS 保存结果…...
C++基础:构建者设计模式
#include <iostream> #include <string> using namespace std; //构建者设计模式-一种工厂只生产一种复杂的产品 class robot {public:string head;string upbody;string downbody; };class robotBuilder {private:robot *myRobot;public:robotBuilder() //构造函…...
Swift 请求用户授权以跟踪其跨应用或网站的活动
步骤1:导入框架 首先,需要在Swift文件中导入AppTrackingTransparency框架。 import AppTrackingTransparency import AdSupport步骤2:请求跟踪许可 在适当的地方请求用户的跟踪许可。通常,这个请求会在应用启动时或者在用户执行…...

最新版npm详解
如:npm中搜索 jQuery image.png image.png 接地气的描述:npm 类似于如下各大手机应用市场 image.png image.png 查看本地 node 和 npm 是否安装成功 image.png image.png 或 npm install -g npm image.png image.png image.png image.png image.…...

超值分享50个DFM模型格式的素人直播资源,适用于DeepFaceLive的DFM合集
50直播模型:点击下载 作为直播达人,我在网上购买了大量直播用的模型资源,包含男模女模、明星脸、大众脸、网红脸及各种稀缺的路人素人模型。现在,我将这些宝贵的资源整理成合集分享给大家,需要的朋友们可以直接点击下…...
Python——一维二维字典数据转化为DataFrame的方法
import pands as pddf pd.DataFrame(dict)...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...