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

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”选项,那实际上也是高级选项中最常用的一个。

相关文章:

Python Cookbook-2.2 写入文件

任务 写入文本或者二进制数据到文件中。 解决方案 下面是最方便的将一个长字符串写人文件的办法: open(thefile.txt,w).write(all_the_text)#写入文本到文本文件 open(abinfiler,wb).write(all_the_data)#写入数据到二进制文件不过,最好还是给文件对象指定个名字…...

机器学习,我们主要学习什么?

机器学习的发展历程 机器学习的发展历程,大致分为以下几个阶段: 1. 起源与早期探索(20世纪40年代-60年代) 1949年:Hebb提出了基于神经心理学的学习机制,开启了机器学习的先河1950年代:机器学习的…...

Unreal5从入门到精通之在编辑器中更新 UserWidgets

前言 在虚幻中创建越来越复杂和灵活的 UserWidget 蓝图时,一个问题是它们在编辑器中的外观与它们在游戏中的最终外观可能有很大不同。 库存面板示例 假设你想创建一个通用的库存显示小部件。我们可以在整个 UI 中使用它,无论我们需要在哪里显示某些内容。 标题,描述所显示…...

C语言-----操作符的分类

1. 操作符的分类 •算术操作符&#xff1a; 、- 、 * 、/、% 移位操作符:<< >> 位操作符: & | ^ 赋值操作符: / 、 % 、 、- 、 *、/、 %、 <<、 >>、&、| 、 ^ 单⽬操作符&#xff1a;&#xff01;、 、- 、 & 、 * 、 、 …...

mac os设置jdk版本

打开环境变量配置文件 sudo vim ~/.bash_profile 设置不同的jdk版本路径 # 设置JAVA_HOME为jdk17路径 export JAVA_HOME$(/usr/libexec/java_home -v 17)# 设置JAVA_HOME为jdk8路径 export JAVA_HOME$(/usr/libexec/java_home -v 1.8) 设置环境变量 # 将jdk加入到环境变量…...

深入理解WebSocket接口:如何使用C++实现行情接口

在现代网络应用中&#xff0c;实时数据传输变得越来越重要。通过WebSocket&#xff0c;我们可以建立一个持久连接&#xff0c;让服务器和客户端之间进行双向通信。这种技术不仅可以提供更快的响应速度&#xff0c;还可以减少不必要的网络流量。本文将详细介绍如何使用C来实现We…...

PWM(脉宽调制)技术详解:从基础到应用实践示例

PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例 目录 PWM&#xff08;脉宽调制&#xff09;技术详解&#xff1a;从基础到应用实践示例学前思考&#xff1a;一、PWM概述二、PWM的基本原理三、PWM的应用场景四、PWM的硬件配置与使用五、PWM的编程…...

Mybatis的#{}和${}

#{}:预编译语句,用?对参数位置进行一个占位的操作,在数据库生成一个模版,等待后续填充.也可以推测出#在生成模版后的性能是比$快的. ${}:即时语句,提前的吧参数填充进去,在MySQL里就是一个完整的SQL语句. 填充逻辑不同 #{}会给String类型的参数自动的加上双引号,而${}则是直…...

【零基础实战】STM32控制DRV8833电机驱动详解

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、DRV8833模块简介二、STM32选型建议三、硬件连接详解1. 接线示意图2. 电源注意事项 四、核心控制原理1. PWM调速原…...

AI智能成长系统 | 应用探讨研究

研究背景 在现代家庭中&#xff0c;三岁宝宝的成长环境日益复杂。由于宝宝每天接触的人群多样&#xff0c;包括家庭成员、同龄小朋友以及可能的陌生人&#xff0c;其语言环境也相应地变得复杂多变。这种环境下&#xff0c;宝宝很容易接触到一些不适宜的语言&#xff0c;即俗称…...

java 网络安全感知 网络安全学java

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 实验五 java网络编程及安全 实验内容 1&#xff0e;掌握Socket程序的编写&#xff1b;2&#xff0e;掌握密码技术的使用&#xff1b;3&#xff0e;设计安全传输…...

VisionMaster4.4 python脚本 图像处理 转换函数 爱之初体验

最近有接触过一丢丢VM4.3的模块开发. 一直有把python图像处理部分模块移植进来的打算 不过时间不够没来得及折腾.偶尔发现4.4支持py脚本 于是拿来折腾.一下午. 发现4.4支持python脚本,好开心. 首先安装VM4.4 注意一定要是4.4 打开后拖了一个模块. 但是发现import numpy imp…...

Node.js 中的 fs 模块详解

fs&#xff08;File System&#xff09;模块是 Node.js 的核心模块之一&#xff0c;用于处理文件系统的操作&#xff0c;包括文件的读取、写入、删除、重命名等。它提供了同步和异步两种操作方式&#xff0c;适用于不同的场景。 1. 前置知识 1.1 文件系统 文件系统是操作系统…...

debezium专栏文章目录

debezium专栏文章目录 第一阶段&#xff1a;基础认知篇 CDC革命&#xff1a;为什么说Debezium改变了数据流动方式&#xff1f; 对比Log-Based/Trigger-Based/Query-Based CDC方案Debezium在数据管道中的战略价值 5分钟部署你的第一个Debezium连接器 使用Docker Compose快速搭…...

python-leetcode 40.二叉树的层序遍历

题目&#xff1a; 给定二叉树的根节点root,返回其节点值得层序遍历&#xff08;即逐层从左到右访问所有节点&#xff09; 方法&#xff1a;广度优先搜索 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val0, leftNone, rightNon…...

蓝桥杯学习大纲

&#xff08;致酷德与热爱算法、编程的小伙伴们&#xff09; 在查阅了相当多的资料后&#xff0c;发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以&#xff0c;干脆自己整理一篇&#xff0c;欢迎大家补充&#xff01; 一、蓝桥必备高频考点 我们以此为重点学习…...

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

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

Debezium 报错:“The db history topic is missing” 的处理方法

Debezium 报错:“The db history topic is missing” 的处理方法 一、引言 在使用 Debezium 进行数据同步时,可能会遇到一个常见的错误:“The db history topic is missing”。这个错误表明 Debezium 无法找到或访问其数据库历史记录主题(db history topic),这通常是由…...

水基试剂,湿式化学,清水,干式化学,干粉,卤烃清洁剂,二氧化碳灭火器UL8检测报告标准讲解:

水基试剂&#xff0c;湿式化学&#xff0c;清水&#xff0c;干式化学&#xff0c;干粉&#xff0c;卤烃清洁剂&#xff0c;二氧化碳灭火器UL检测报告标准讲解&#xff1a; 本政策涵盖的灭火器 水基试剂灭火器 水基试剂灭火器使用水基试剂带走燃烧三要素中的热量要素&#xf…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-build.py

build.py ultralytics\data\build.py 目录 build.py 1.所需的库和模块 2.class InfiniteDataLoader(dataloader.DataLoader): 3.class _RepeatSampler: 4.def seed_worker(worker_id): 5.def build_yolo_dataset(cfg, img_path, batch, data, mode"train"…...

Windows隐藏窗口/开机自启动

目录 使用Start-Process命令控制窗口状态 设置程序开机自启动 使用Start-Process命令控制窗口状态 隐藏窗口运行程序 使用Start-Process命令时&#xff0c;可以通过-WindowStyle Hidden参数让程序在后台运行&#xff0c;窗口不可见。例如&#xff1a; Start-Process D:\note…...

汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常

故障现象  一辆2010款路虎揽胜车&#xff0c;搭载5.0 L发动机&#xff0c;累计行驶里程约为16万km。车主反映&#xff0c;接通空调开关后&#xff0c;有时出风忽大忽小&#xff0c;有时不出风&#xff0c;有时要等2 min左右才出风&#xff1b;有时两三天出现一次&#xff0c;…...

文件IO(20250217)

1. 文件IO 系统调用Linux内核提供的文件操作接口 1. 打开文件 open 2. 读写文件 read/write 3. 关闭文件 close 1.1 open函数 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int open(const char *pathname, int flags); int ope…...

Mac arm架构使用 Yarn 全局安装 Vue CLI

dgqdgqdeMacBook-Pro spid-admin % vue --version zsh: command not found: vue要使用 Yarn 安装 Vue CLI&#xff0c;你可以执行以下命令&#xff1a; yarn global add vue/cli这个命令会全局安装 Vue CLI&#xff0c;让你可以使用 vue 命令创建、管理 Vue.js 项目。以下是一…...

ES6相关操作(2)

一.Promise Promise是ES6引入的异步编程工具。 语法上Promise是一个构造函数,用于封装异步操作并可以获取操作成功或失败的结果 Promise构造函数:Promise(excutor){} Promise的常用函数:then,catch 实例化Promise对象(创建Promise工具) let data"请求数据"//该数据为…...

成员函数定义后面加const是什么功能:C++中const成员函数的作用

成员函数定义后面加const是什么功能&#xff1a;C中const成员函数的作用 前言C中const成员函数的作用总结 前言 在PX4的代码中的位置控制模块中&#xff0c;有这样一个成员函数 void getAttitudeSetpoint(vehicle_attitude_setpoint_s &attitude_setpoint) const;该函数的…...

DeepSeek智能测试助手:分类+推理+导出一站式工具

前言 测试开发工程师在日常工作中需要处理大量测试文档&#xff0c;并且这些文档需要被高效分类、清洗和管理&#xff0c;同时结合强大的 AI 推理能力&#xff08;如 DeepSeek 模型&#xff09;进行智能化处理和分析。为此&#xff0c;我们开发了一款基于 PyQt5 的 GUI 工具&a…...

【嵌入式Linux应用开发基础】进程间通信(3):共享内存

目录 一、共享内存核心概念 1.1. 特点 1.2. 适用场景 二、共享内存原理剖析 三、嵌入式 Linux 中共享内存的使用 3.1. 相关函数介绍 3.2. System V共享内存操作步骤 3.3. 同步机制&#xff08;示例使用System V信号量&#xff09; 3.4. POSIX共享内存&#xff08;现代…...

日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(10): になります :表示从一种状态转变为另一种状态,“变得……”“成为……”

日语学习-日语知识点小记-构建基础-JLPT-N4&N5阶段(10): になります :表示从一种状态转变为另一种状态,“变得……”“成为……”  1、前言(1)情况说明(2)工程师的信仰2、知识点(1)寒くなりました & 元気になりました(2)何(なに)になりたいですか。(…...

计算机毕业设计Python农产品推荐系统 农产品爬虫 农产品可视化 农产品大数据(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...