Python Cookbook-2.2 写入文件

任务

写入文本或者二进制数据到文件中。

解决方案

下面是最方便的将一个长字符串写人文件的办法:

open('thefile.txt','w').write(all_the_text)#写入文本到文本文件
open('abinfiler','wb').write(all_the_data)#写入数据到二进制文件

不过,最好还是给文件对象指定个名字,这样你就可以在完成操作之后调用 close 关闭文件对象。比如,对一个文本文件:

file_object =open('thefile.txt','w')
file_object.write(all_the_text)
file_object.close()

可是,很多时候想写入的数据不是在一个大字符串中,而是在一个字符串列表(或其他序列)中。为此,应该使用writelines方法(不要望文生义,这个方法并不局限于行写人,而且二进制文件和文本文件都适用):

file_object.writelines(list_of_text_strings)
open('abinfile','wb').writelines(list_of_data_strings)

当然也可以先把子串拼接成大字符串(比如用”join)再调用write写入,或者在循环中写人,但直接调用 writelines 要比上面两种方式快得多。

讨论

要创建一个用于写人的文件,必须将 open(或文件对象)的第二个参数指定为“w”以允许写入文本数据,或者“wb”以允许写入二进制数据。当你试图写人而不是读取文件的时候,你更应该重视2.1节提到的关闭文件的建议。只有在文件被正确关闭之后你才能确信数据被写入了磁盘,而不是暂存于内存中的临时缓存中。
分批次将数据写人文件的应用,甚至比分批次从文件中读取数据的应用更为常见,只需准备妥当字符串或者字符串序列,然后反复地调用write或writelines 即可。每个 write操作都会在文件末尾增添新数据,紧随已经写人的旧数据。当你完成了写人工作,可调用close方法来关闭文件对象。如果你能够一次准备好所有需要写人的数据,可以调用 writelines 来一次性完成写人任务,这样更快也更简单。但如果你每次只能准备好一部分数据,那么最好分批次写入。比起另一个方法,即,先在内存中建立一个大的临时数据序列用于存储所有的数据,然后用writelines一次性将所有数据写人文件,分批次写人明显要更好一些。读取和写人这两种操作,在一次性大数据处理和分批次小数据处理这两个方面,性能和方便程度都表现出很大的区别。
当用“w”(或“wb”)选项打开一个文件准备写入数据的时候,文件中原有的数据都将被清除;即使在打开之后迅速关闭,得到的仍然是一个空文件。如果你想把新数据添加在原有的数据之后,应该用“a”(或“ab”)选项来打开文件。还有一些更高级的选项可允许你对同一个文件同时进行读取和写人操作,见第28节中提到的“r+b”选项,那实际上也是高级选项中最常用的一个。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文件和目录的操作-8

文章目录 1.IO流2.文件流操作with语句3.文件和文件夹的操作4.案例1.IO流 通过“流”的形式允许计算机程序使用相同的方式来访问不同的输入/输出源。stream是从源(source)到接收目标的(sink)有序数据。如果把输入/输出源比作“水桶”,那流就是“管道” 文件流:就是源或者…

EasyRTC:轻量化SDK赋能嵌入式设备,开启智能硬件音视频通讯新篇章

在智能硬件与物联网飞速发展的今天,嵌入式设备的音视频通讯能力正变得愈发重要。然而,受限于硬件资源,尤其是Flash存储空间的不足,传统音视频通讯方案往往难以在嵌入式设备上实现高效集成。EasyRTC凭借其轻量级SDK和先进的技术架构…

处理哈希冲突

有时候哈希表⽆论选择什么哈希函数都⽆法避免冲突,那么插⼊数据时,如何解决冲突呢?主要两种⽅法,线性探测法和链地址法,这篇先做原理描述,下篇实现代码模拟 一、线性探测 发生冲突的位置开始,依…

安装MySQL9.1.0-winx64.msi的报错解决办法:Database initialization failed。(也适用9.2.0)

csdn上有很多关于安装MySQL9.1.0-winx64.msi的报错(Database initialization failed)的解决办法,根据报错log便签内容总结一下有以下几种: 1、电脑名称有中文的,参考这篇: 【MySQL】Windows上安装MySQL时…

聊一聊vue如何实现角色权限的控制的

大家好,我是G探险者。 关于角色与权限控制,通常是分为两大类:一种是菜单权限;一种是操作权限。 菜单权限是指,每个角色对应着可以看到哪些菜单,至于每个菜单里面的每个按钮,比如增删改查等等这类…

使用 OpenTelemetry 和 Langtrace 的 Elastic 分发跟踪基于 RAG 的聊天机器人

作者:来自 Elastic Bahubali Shetti 如何使用 Elastic 观察基于 OpenAI RAG 的应用程序。使用 Langtrace 对应用程序进行检测,收集日志、跟踪、指标,并了解 LLM 在 Kubernetes 上使用 OpenTelemetry 的 Elastic Distributions 的运行情况。 目…

掌握.NET Core后端发布流程,如何部署后端应用?

无论你是刚接触.NET Core的新手还是已有经验的开发者,在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践,帮助你高效顺利地将.NET Core后端应用部署到生产环境中 目录 程序发布操作 Docker容器注册表 文件夹发布 导入配置文件 网站运行操作 …

VSCode配置C/C++开发环境|最新教程202502

📢 ‌Windows版VSCode配置C/C开发环境(单文件多文件全解析)‌ 一、 ‌环境准备‌ ✅‌必需工具‌:Visual Studio Code 2025‌ ✅扩展插件‌:C/C(Microsoft官方扩展)📢 这个必须安…

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025) 本文内容需要你有一定的 Linux 操作基础,最好是程序员那种,英文水平足够用才行。一般人不需要使用这么复杂的路由器操作系统&#xff0c…

2025最新智能优化算法:改进型雪雁算法(Improved Snow Geese Algorithm, ISGA)求解23个经典函数测试集,MATLAB

一、改进型雪雁算法 雪雁算法(Snow Geese Algorithm,SGA)是2024年提出的一种新型元启发式算法,其灵感来源于雪雁的迁徙行为,特别是它们在迁徙过程中形成的独特“人字形”和“直线”飞行模式。该算法通过模拟雪雁的飞行…

【从0做项目】Java文档搜索引擎(9)烧脑终章!

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 文章导读 阿华将发布项目复盘系列的文章,旨在: 1:手把手细致带大家从0到…

cs106x-lecture12(Autumn 2017)-SPL实现

打卡cs106x(Autumn 2017)-lecture12 (以下皆使用SPL实现,非STL库,后续课程结束会使用STL实现) travel Write a recursive function named travel that accepts integers x and y as parameters and uses recursive backtracking to print all solution…

vue取消全选功能按钮注意事项

这里这个功能是通过各种条件查出数据,但只取一条数据进行后续业务,虽然每一条数据前面都有多选框,但只需要选一个,所以在业务上分析可以把这个全选按钮取消掉 这里不是简单的把多选组件的selection-change"handleSelectionChange"和handleSelectionChange方法去掉,因…

三维扫描仪:如何快速获取产品外部结构尺寸?

在精密制造与质量控制领域,传统测量方法因接触式检测效率低、数据维度单一等问题,正面临数字化升级的迫切需求。 传统测量方法的局限性: 传统的测量工具,如卡尺、千分尺和三坐标测量仪,虽然在精度上有一定的保证&…

无人机避障——感知篇(采用Livox-Mid360激光雷达获取点云数据显示)

电脑配置:Xavier-nx、ubuntu 18.04、ros melodic 激光雷达:Livox_Mid-360 1、安装激光雷达驱动 下载安装Livox-SDK2 如果git clone不了,在github上下载相应的zip进行手动安装,安装网址如下: https://github.com/L…

ubuntu22.04使用minikube安装k8s

ubuntu使用minikube安装k8s 准备工作安装步骤安装docker安装kubectl安装minikube导入相关镜像安装相关指令启动minikube服务 安装dashboard组件导入相关镜像创建服务账号安装组件本体验证安装结果 准备工作 下载离线安装包,安装包内容如下: 软件说明ki…

西门子1200下载、上传程序。

下载 第一种 直接点击图标下载,此种方式PLC会停机。 第二种 这三种的区别: 上传 创建新的项目。

基于Openlayers对GeoServer发布的数据进行增删改

使用GeoServer进行图斑数据管理 本文将介绍如何使用GeoServer进行图斑数据的新增、删除和修改。我们将通过一个Vue.js应用来演示这些功能。 设置Vue.js应用 首先,我们设置Vue.js应用,并添加必要的组件和交互逻辑。 Check.vue Check.vue文件包含初始…

自动化之ansible(二)

一、ansible中playbook(剧本) 官方文档: Ansible playbooks — Ansible Community Documentation 1、playbook的基本结构 一个基本的playbook由以下几个主要部分组成 hosts: 定义要执行任务的主机组或主机。 become: 是否需要使用超级用户…

函数执行中的栈和寄存器调用

函数执行中的栈和寄存器调用 函数执行过程中主要用到的寄存器有程序计数器和栈指针。 程序计数器(IP):指向下一条执行指令的地址,其值用%rip来表示 栈指针:指向栈顶地址,其值用%rsp来表示 当过程P调用过…