如何使用 Python 写入文本文件 ?
在Python编程中,写入文本文件是一项基本且重要的操作。
无论是生成日志文件、配置文件,还是进行数据输出,都需要用到这一技能。
下面,我将详细介绍如何使用Python写入文本文件,并提供一些实际开发中的建议和注意事项。
1. 基本写入方法
Python提供了多种写入文件的方法,其中最常用的是使用内置的open()函数。以下是一个基本的示例:
# 打开文件并写入内容
with open('example.txt', 'w', encoding='utf-8') as file:file.write('Hello, World!\n')file.write('This is a test.\n')
代码解释:
open('example.txt', 'w', encoding='utf-8'):打开名为example.txt的文件,使用写入模式('w'),并指定编码为UTF-8。如果文件不存在,则创建该文件;如果文件存在,则清空文件内容。file.write():将字符串写入文件。
2. 追加写入
如果希望在文件末尾追加内容,而不是清空文件,可以使用追加模式('a'):
# 打开文件并追加内容
with open('example.txt', 'a', encoding='utf-8') as file:file.write('Appended content.\n')
代码解释:
open('example.txt', 'a', encoding='utf-8'):打开名为example.txt的文件,使用追加模式('a'),并指定编码为UTF-8。
3. 写入多行内容
可以使用writelines()方法一次性写入多行内容:
# 写入多行内容
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
with open('example.txt', 'w', encoding='utf-8') as file:file.writelines(lines)
代码解释:
file.writelines(lines):将列表中的字符串逐行写入文件。
4. 处理大文件
对于非常大的文件,可以使用生成器来逐行写入,避免内存溢出:
def generate_large_content(size):for i in range(size):yield f'Line {i}\n'# 使用生成器写入大文件
with open('large_example.txt', 'w', encoding='utf-8') as file:for line in generate_large_content(1000000):file.write(line)
代码解释:
yield:生成器函数返回一个生成器对象,每次迭代时生成一行内容。
5. 实际开发中的建议
- 编码问题:始终指定文件的编码格式,避免因编码问题导致写入失败或乱码。
- 异常处理:使用
try-except块捕获文件写入过程中的异常,如磁盘空间不足或权限不足。 - 性能优化:对于大文件,尽量使用生成器逐行写入,避免一次性加载整个文件到内存。
- 文件备份:在写入重要文件前,建议先备份原文件,以防数据丢失。
try:with open('example.txt', 'w', encoding='utf-8') as file:file.write('Hello, World!\n')
except IOError as e:print(f"写入文件时发生错误: {e}")
6. 注意事项
- 文件路径:确保文件路径正确,可以使用相对路径或绝对路径。
- 文件关闭:使用
with语句确保文件在使用完毕后自动关闭,避免资源泄漏。 - 编码一致性:读取和写入文件时,确保编码一致,避免乱码问题。
- 换行符:在不同操作系统中,换行符可能不同(如Windows使用
\r\n,Unix/Linux使用\n)。可以使用Python的os模块来处理跨平台的换行符问题。
import os# 获取当前操作系统的换行符
newline = os.linesep# 写入文件时使用换行符
with open('example.txt', 'w', encoding='utf-8') as file:file.write(f'Line 1{newline}')file.write(f'Line 2{newline}')
7. 示例:处理CSV文件
虽然CSV文件本质上也是文本文件,但Python提供了csv模块来更方便地处理CSV数据:
import csv# 写入CSV文件
data = [['Name', 'Age'], ['Alice', '30'], ['Bob', '25']]
with open('output.csv', 'w', encoding='utf-8', newline='') as file:writer = csv.writer(file)writer.writerows(data)
代码解释:
csv.writer(file):创建一个CSV写入器对象。writerows(data):将二维列表写入CSV文件。newline='':确保在不同操作系统中正确处理换行符。
8. 示例:写入JSON文件
对于结构化数据,可以使用json模块将数据写入JSON文件:
import json# 写入JSON文件
data = {'Name': 'Alice', 'Age': 30, 'City': 'New York'}
with open('output.json', 'w', encoding='utf-8') as file:json.dump(data, file, ensure_ascii=False, indent=4)
代码解释:
json.dump(data, file, ensure_ascii=False, indent=4):将Python对象写入JSON文件,ensure_ascii=False确保非ASCII字符正确写入,indent=4使JSON文件格式化输出。
写入文本文件是Python编程中的基本操作,掌握多种写入方法可以有效应对不同场景的需求。
在实际开发中,应注意编码问题、异常处理和性能优化,确保代码的健壮性和高效性。
通过合理使用生成器、CSV模块和JSON模块,可以进一步提高处理大文件和结构化数据的效率。
相关文章:
如何使用 Python 写入文本文件 ?
在Python编程中,写入文本文件是一项基本且重要的操作。 无论是生成日志文件、配置文件,还是进行数据输出,都需要用到这一技能。 下面,我将详细介绍如何使用Python写入文本文件,并提供一些实际开发中的建议和注意事项…...
07篇(附)--仿射变换矩阵
此篇献给某些 头铁 的小只因们,认真钻研下面的数学式吧 原理示例 首先我们以最简单的一个点的旋转为例子,且以最简单的情况举例,令旋转中心为坐标系中心O(0,0),假设有一点P0(x0,y0)࿰…...
KubeSphere搭建单节点RocketMQ
前提环境: Docker环境 Harbor仓库(可选) 参考官方文档: 《Docker 部署 RocketMQ》 https://rocketmq.apache.org/zh/docs/quickStart/02quickstartWithDocker参考官方文档: 《RocketMQ Dashboard》 https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard/ 声…...
深度学习中损失函数(loss function)介绍
深度学习中损失函数(loss function)介绍 在深度学习的宏伟城堡中,损失函数扮演着国王的角色,它决定了模型训练的方向和目标。损失函数,也被称为代价函数,是衡量模型预测与实际结果之间差异的函数。在深度学习的训练过程中&…...
Vue3+Node中使用webrtc推流至mediamtx
前言 项目的 Web 端是 Vue3 框架,后端是 GO 框架。需要实现将客户端的本地摄像头媒体流推送至服务端,而我自己从未有媒体流相关经验,最初 leader 让我尝试通过 RTSP 协议推拉流,我的思路就局限在了 RTSP 方向。 最初使用的服务端…...
React 内置的Hook学习
useState:管理组件状态 useState 是一个用于在函数组件中添加状态的 Hook。它允许你在函数组件中声明一个状态变量,并提供一个更新该状态的方法,其中与组件生命周期的关系: 初始化:当组件首次渲染时,useS…...
Flutter Navigator2.0的原理和Web端实践
01 背景与动机 在Navigator 2.0推出之前,Flutter主要通过Navigator 1.0和其提供的 API(如push(), pop(), pushNamed()等)来管理页面路由。然而,Navigator 1.0存在一些局限性,如难以实现复杂的页面操作(如移…...
初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容
uniapp微信小程序页面结构 首页页面代码 微信小程序模拟器 模拟器页面为空白时查了下,有几个说是“Hbuilder编译的时候应该编译出来一个app.js文件 但是却编译出了App.js”,但是我的小程序结构没问题,并且真机预览没有问题 真机调试 根据defi…...
【HF设计模式】03-装饰者模式
声明:仅为个人学习总结,还请批判性查看,如有不同观点,欢迎交流。 摘要 《Head First设计模式》第3章笔记:结合示例应用和代码,介绍装饰者模式,包括遇到的问题、遵循的 OO 原则、达到的效果。 …...
【人工智能-中级】模型部署与优化:从本地实验到云端与边缘部署
模型部署与优化:从本地实验到云端与边缘部署 在机器学习和深度学习模型训练完成后,如何高效、稳定地将模型部署到生产环境中,是实际应用中的关键环节。模型部署不仅涉及技术实现,还需要考虑性能优化、资源管理和安全性等多方面因素。本文将全面探讨模型部署与优化的相关内…...
Jenkins 编写Pipeline 简介及使用初识详解
一、Jenkins Pipeline简介 Jenkins Pipeline是Jenkins的一个重要功能,Jenkins 2.0 以上才会有,一系列 Jenkins 插件将整个持续集成用解释性代码 Jenkinsfile 来描述,它允许开发者以代码的方式定义整个持续集成和交付(CI/CD)流程,包括构建、测试、部署和监控等步骤。Jenk…...
uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案
开发板:mx6ull-ALPHA_V2.4 ubuntu版本:20.04 1.现在虚拟机设置中添加网路适配器用于开启桥接模式 2.在编辑中打开“虚拟网络编辑器” 我的电脑本身只有VMnet1和VMnet8,需要底下“添加网络”,增加这个VMnet0 ,并且进行…...
精准预测美国失业率和贫困率,谷歌人口动态基础模型PDFM已开源,可增强现有地理空间模型
疾病、经济危机、失业、灾害……人类世界长期以来被各种各样的问题「侵扰」,了解人口动态对于解决这类复杂的社会问题至关重要。 政府相关人员可以通过人口动态数据来模拟疾病的传播,预测房价和失业率,甚至预测经济危机。然而,在过…...
C#速成(文件读、写操作)
导包 using System.IO;1、写入文件(重要) StreamWriter sw new StreamWriter("C:\Users\29674\Desktop\volumn.txt");//创建一个TXT的文件 sw.WriteLine(textBox2.Text);//写入文件的内容 sw.Close();//关闭2、读取文件(不重要&…...
SQL server学习03-创建和管理数据表
目录 一,SQL server的数据类型 1,基本数据类型 2,自定义数据类型 二,使用T-SQL创建表 1,数据完整性的分类 2,约束的类型 3,创建表时创建约束 4,任务 5,由任务编写…...
【UE5 “RuntimeLoadFbx”插件】运行时加载FBX模型
前言 为了解决在Runtime时能够直接根据FBX模型路径直接加载FBX的问题,推荐一款名为“RuntimeLoadFBX”的插件。 用法 插件用法如下,只需要指定fbx的地址就可以在场景中生成Actor模型 通过指定输入参数“Cal Collision”来设置FBX模型的碰撞 还可以通过…...
【潜意识Java】深入理解 Java 面向对象编程(OOP)
目录 什么是面向对象编程(OOP)? 1. 封装(Encapsulation) Java 中的封装 2. 继承(Inheritance) Java 中的继承 3. 多态(Polymorphism) Java 中的多态 4. 抽象&…...
windows同时使用多个网卡
windows同时链接了有线网络,多个无线网卡,默认会使用有线网络,如果想要局域网内使用某个特定的网络,可以设置静态ip 1. 首先删除原来的静态网络(不冲突可以不删除),我这里usb无线网卡切换过usb插口,这里需要删除原来的. 使用 route print 查看接口列表及静态路由信息 route p…...
Spark执行计划解析后是如何触发执行的?
在前一篇Spark SQL 执行计划解析源码分析中,笔者分析了Spark SQL 执行计划的解析,很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行,每个概念之间没有强烈的关联,因此这中间总感觉少了点…...
B4X编程语言:B4X控件方法汇总
1、AddNode、AddView方法 AddNode(Node As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J控件 AddView(View As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J的B4XView …...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
