当前位置: 首页 > news >正文

如何使用 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)&#xff0…...

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 …...

千问3.5-9B Python入门实战:从零搭建你的第一个AI应用

千问3.5-9B Python入门实战:从零搭建你的第一个AI应用 1. 为什么选择千问3.5-9B入门AI开发 如果你刚接触Python和AI开发,可能会觉得搭建AI应用是个遥不可及的目标。但实际上,借助星图GPU平台和千问3.5-9B这样的开源大模型,入门A…...

SEO_如何通过内容优化有效提升SEO效果?(193 )

SEO内容优化:提升网站SEO效果的关键策略 在当今的数字化时代,搜索引擎优化(SEO)已经成为了任何一个想要在网络上脱颖而出的关键步骤。特别是在百度这个中国最大的搜索引擎平台上,如何通过内容优化有效提升SEO效果&…...

ThinkPad X220 安装 Arch Linux 完美指南

1 镜像准备 1.1 镜像下载 安装镜像 iso 在开源镜像站(推荐)或者 archlinux 官方下载页面 下载。 国内常用的提供 archlinux 安装镜像的开源镜像站(选一个即可): 中国科学技术大学开源镜像站清华大学开源软件镜像站…...

开发者必备:OpenClaw调试Phi-3-mini-128k-instruct接口的3个关键技巧

开发者必备:OpenClaw调试Phi-3-mini-128k-instruct接口的3个关键技巧 1. 为什么需要专门调试Phi-3-mini接口? 上周我在尝试用OpenClaw对接Phi-3-mini-128k-instruct模型时,遇到了一个典型问题:明明本地curl测试接口返回正常&…...

OpenClaw小团队协作:Qwen3.5-9B共享任务队列实践

OpenClaw小团队协作:Qwen3.5-9B共享任务队列实践 1. 为什么我们需要共享任务队列 去年冬天,我们团队遇到了一个典型的工作瓶颈。当时有三个并行的数据处理项目需要在一周内完成,每个项目都涉及数据清洗、分析报告生成和可视化图表制作。传统…...

OpenClaw+Phi-3-mini-128k-instruct:自动化技术面试题库更新系统

OpenClawPhi-3-mini-128k-instruct:自动化技术面试题库更新系统 1. 为什么需要自动化题库更新 作为一名技术面试官转行的开发者,我深知保持题库时效性的痛苦。去年帮朋友准备面试时,发现他还在刷2018年的LeetCode老题,而新出现的…...

Google Cloud Python客户端库版本管理终极指南:如何选择和使用不同版本

Google Cloud Python客户端库版本管理终极指南:如何选择和使用不同版本 【免费下载链接】google-cloud-python Google Cloud Client Libraries for Python 项目地址: https://gitcode.com/gh_mirrors/go/google-cloud-python Google Cloud Python客户端库为开…...

终极指南:Dunst在Wayland环境下的完美通知解决方案

终极指南:Dunst在Wayland环境下的完美通知解决方案 【免费下载链接】dunst Lightweight and customizable notification daemon 项目地址: https://gitcode.com/gh_mirrors/du/dunst Dunst是一款轻量级且高度可定制的通知守护进程,专为现代Linux桌…...

OpenClaw多模型路由:千问3.5-35B-A3B-FP8与其他模型协同工作

OpenClaw多模型路由:千问3.5-35B-A3B-FP8与其他模型协同工作 1. 为什么需要多模型路由? 去年我在尝试用OpenClaw自动化处理个人知识库时,遇到了一个典型问题:当我让AI助手整理科研论文时,它总把图表说明文字识别成正…...

音谷 - AI 多角色多情绪配音平台 github开源的多角色、多情绪 AI 配音生成平台,支持小说、剧本、视频等内容的自动配音与导出。

简介说明 音谷 - AI 多角色多情绪配音平台 github开源的多角色、多情绪 AI 配音生成平台,支持小说、剧本、视频等内容的自动配音与导出。 定位:为小说、剧本、视频等内容提供多角色、多情绪的 AI 语音合成与配音服务 主要功能: 小说 / 剧本…...