萌新学 Python 之 with 文件操作语句

news2025/5/13 13:57:37

with 语句用于资源管理,避免资源泄露,对文件操作时,不管文件是否有异常,都会自动清理和关闭

with 语句的格式:

with open('文件路径', mode='模式', encoding='utf-8') as file_obj:    # as 取别名
    print('对文件进行操作,操作完成后不需要则 close 关闭文件')
    pass

举个简单的例子:读取 d 盘下的指定文件,r 是只读,w 是只写

read(),读取文件内容,保存的是字符串

write(),写入内容

with open(r'd:\test.txt', mode='r', encoding='utf-8') as f:
    content = f.read()       # 读取文件内容,保存到 content 中(保存的是 str 字符串类型)
    print(content)

在指定位置插入新内容:

因为原 test.txt 文本有内容,如果在末尾添加新内容,先要计算字符串长度,再在后面添加,

中间插入同理,需要用到索引下标切片,若是修改内容,在修改的字符串位置写入新内容即可

注意,写入操作完成后,自动关闭,需要再读取文件重新打开

# 在指定位置插入内容
with open(r'd:\test.txt', mode='r', encoding='utf-8') as f1:
    content = f1.read()

str_len = 4
new_content = content[:str_len] + '\n你好' + content[str_len:]

# 新内容写入原文件
with open(r'd:\test.txt', mode='w', encoding='utf-8') as f2:
    f2.write(new_content)

# 上面操作文件自动关闭了,需要重新打开
with open(r'd:\test.txt', mode='r', encoding='utf-8') as f3:
    print(f3.read())

在指定行插入新内容:

readlines(),内容返回列表

insert 插入,下标从 0 开始,如果原行数不够,在末尾插入

writelines(),新内容写入行

# 在指定行插入新内容
with open(r'd:\test.txt', mode='r', encoding='utf-8') as f1:
    content = f1.readlines()         # 内容返回列表
    print(content)

content.insert(2, '你好')             # 下标从0开始,实则是在第三行插入内容,若是原行数不够,在末尾插入

with open(r'd:\test.txt', mode='w', encoding='utf-8') as f2:
    f2.writelines(content)           # 将新内容写入行

with open(r'd:\test.txt', mode='r', encoding='utf-8') as f3:
    print(f3.read())

案例:创建一个目录 file_txt,生成 10 个 001.txt,...,010.txt 文件,并且每个文件随机写入 10 个 a ~ z 的字母

先判断目录是否存在 os.path.exists(path)

创建目录 os.makedirs(path)

for 循环生成 10 个文件,os.path.join() 路径拼接文件路径

注意 '{:03d}.txt'.format(i) 格式化输出要加冒号,前面是索引位置

文件 w 只写,random.choices() 从给定的序列中随机选择元素

string.ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'  字母小写

抽取 10 次结果返回,概率一致,写入生成的文本文件

# 创建一个目录 file_txt,生成 10 个 001.txt,...,010.txt 文件,并且每个文件随机写入 10 个 a ~ z 的字母
import os.path
import random
import string

path = './file_txt'     # 在当前文件指定目录的路径
if not os.path.exists(path):     # 如果该目录不存在
    os.makedirs(path)            # 创建目录
    for i in range(1, 11):
        file_name = os.path.join(path, '{:03d}.txt'.format(i))
        with open(file_name, mode='w') as f:
            random_str = ''.join(random.choices(string.ascii_lowercase, k=10))
            f.write(random_str)

可以看到生成目录,目录下生成文本文件

打开看,每个文件随机生成 10 个字母

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2308456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Unity 唐老狮 No.2 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体…

FFmpeg-chapter3-读取视频流(原理篇)

ffmpeg网站:About FFmpeg 1 库介绍 (1)libavutil是一个包含简化编程函数的库,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等等。 (2)libavcodec是一个包含音频/视频编解码器的解码器和编…

单片机中的flah和RAM

片机的 Flash 和 RAM 是两种关键的内存类型,分别用于存储程序代码和运行时数据。 Flash 存储器 用途:用于存储程序代码(如固件)和常量数据(如查找表、字符串等)。 特点: 非易失性:断…

【Pytest】setup和teardown的四个级别

文章目录 1.setup和teardown简介2.模块级别的 setup 和 teardown3.函数级别的 setup 和 teardown4.方法级别的 setup 和 teardown5.类级别的 setup 和 teardown 1.setup和teardown简介 在 pytest 中,setup 和 teardown 用于在测试用例执行前后执行一些准备和清理操…

单细胞marker基因表达密度图-(还有一个包装函数)

有小伙伴说想要做单细胞marker基因表达密度图,我一想,好像之前是做过的(单细胞marker基因可视化的补充---密度图与等高线图)。但是他又说没有文献中的效果。后来我一看,是因为着色的问题。其实用Nebulosa包&#xff08…

记忆化搜索与动态规划:原理、实现与比较

记忆化搜索和动态规划是解决优化问题的两种重要方法,尤其在处理具有重叠子问题和最优子结构性质的问题时非常有效。 目录 1. 记忆化搜索(Memoization) 定义: 实现步骤: 示例代码(斐波那契数列&#xff0…

架构师面试(九):缓存一致性

问题 关于【数据库和缓存】一致性,下面哪几项是在线上生产环境中相对合理的处理方式? A. 对于查询操作,先查缓存,如果为空则查 DB,然后将数据带入缓存; B. 对于插入操作,只写 DB 即可&#…

Spring Boot集成Spring Ai框架【详解 搭建Spring Ai项目,以及简单的ai大模型智能体应用,附有图文+示例代码】

文章目录 一.Spring Ai介绍1.0 认识Spring Ai1.1 特征1.1 大模型专业名字介绍1.1.1 RAG(检索增强生成)RAG 的基本原理RAG 的关键技术RAG 的优势RAG 的应用场景 1.1.2 fine-tuning(微调)1.1.3 function-call(函数调用) 1.2 创建简单的Spring Ai项目 二.Spring Ai简单的智能应用2…

OpenHarmony启动系统-U-Boot简介和源码下载与编译

OpenHarmony系统启动流程简述 设备上电后,OpenHarmony系统大致经历以下3个阶段: 1.BootRom代码引导加载UBoot; 2.UBoot启动初始化硬件资源,引导并加载系统内核(Linux内核); 3.Kernel(LiteOs,Linux内核)启动、加载驱动…

Metal 学习笔记六:坐标空间

要在网格上轻松找到一个点,您需要一个坐标系。例如,如果网格恰好是您的 iPhone 15 屏幕,则中心点可能是 x:197、y:426。但是,该点可能会有所不同,具体取决于它所处的空间。 在上一章中&#xf…

Java测试框架Mockito快速入门

Mockito结合TestNG快速入门 什么是Mockito Mockito 是一个专门用于 Java 的强大测试框架,主要用来创建和管理模拟对象,辅助开发者进行单元测试,具有以下特点和功能: 创建模拟对象:能通过简洁的语法创建类或接口的模…

LabVIEW 无法播放 AVI 视频的编解码器解决方案

用户在 LabVIEW 中使用示例程序 Read AVI File.vi(路径: 📌 C:\Program Files (x86)\National Instruments\LabVIEW 2019\examples\Vision\Files\Read AVI File.vi)时发现: ✅ LabVIEW 自带的 AVI 视频可正常播放 这是…

AI编程界的集大成者——通义灵码AI程序员

一、引言 随着软件行业的快速发展和技术的进步,人工智能(AI)正在成为软件开发领域的一个重要组成部分。近年来,越来越多的AI辅助工具被引入到开发流程中,旨在提高效率、减少错误并加速创新。在这样的背景下&#xff0…

第三十三:6.3. 【mitt】 任意组件通讯

概述:与消息订阅与发布(pubsub)功能类似,可以实现任意组件间通信。 // 引入mitt import mitt from "mitt";// 创建emitter const emitter mitt()/*// 绑定事件emitter.on(abc,(value)>{console.log(abc事件被触发,…

6.7 数据库设计

文章目录 数据库设计6个阶段新奥尔良法完整导图 数据库设计6个阶段 数据库设计是指,根据应用环境,构造数据库模式,建立数据库、应用系统,实现有效地数据存储,以满足用户需求。 数据库设计过程包含6个阶段 数据库规划&…

Java 大视界 -- Java 大数据在智能安防入侵检测与行为分析中的应用(108)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

Vue3实现文件上传、下载及预览全流程详解(含完整接口调用)

文章目录 一、环境准备1.1 创建Vue3项目1.2 安装依赖1.3 配置Element Plus 二、文件上传实现2.1 基础上传组件2.2 自定义上传逻辑(Axios实现) 三、文件下载实现3.1 直接下载(已知文件URL)3.2 后端接口下载(二进制流&am…

【云原生】SpringCloud-Spring Boot Starter使用测试

目录 Spring Boot Starter是什么? 以前传统的做法 使用 Spring Boot Starter 之后 starter 的理念: starter 的实现: ?创建Spring Boot Starter步骤 在idea新建一个starter项目、直接执行下一步即可生成项目。 ?在xml中加入如下配置…

介绍下pdf打印工具类 JasperPrint

JasperPrint 工具类深度解析 JasperPrint 是 JasperReports 框架中实现 PDF 打印的核心载体类,其本质是 填充数据后的可打印报表对象,承担着从模板编译、数据填充到格式输出的全流程控制。以下从 7 个维度展开深度解析: 一、核心定位与生命周…

idea中或pycharm中编写Markdown文件

参考 ltjt_aiseek: seek_backend_py 项目 数智科技ai探索API接口开发 1. 安装 Django 框架 在开始创建 Django 项目之前,需要先安装 Django 框架。可以通过 PyCharm 的终端或者系统的命令行工具来完成安装。 使用 PyCharm 终端安装 打开 PyCharm,如果…