python(17)--文件的输入/输出

前言

在Python中,文件文本操作是非常重要的,主要有以下几个原因:

  1. 数据持久性:当你需要长期存储数据,如用户的个人信息、交易记录或数据库元数据等,将数据保存在文件中是一种常见的方法。文件系统提供了持久性和可扩展性,允许你随着时间的推移添加更多的数据。
  2. 可读性和可维护性:以文本形式保存数据便于阅读和修改。这对于人类可读的日志文件、配置文件等尤其重要。
  3. 跨平台兼容性:文本文件可以在不同的操作系统和平台上轻松共享和传输。它们不需要特定的软件或硬件支持,因此非常适合在分布式系统或网络环境中使用。
  4. 灵活性:文本文件可以轻松地通过各种工具和语言进行编辑和处理,这为数据分析和处理提供了很大的灵活性。
  5. 性能优化:对于非常大的数据集,将数据存储在文件中可能比直接在内存中处理更为高效。通过读取和写入文件,你可以一次处理一个数据块,而不是一次性加载整个数据集。
  6. 自动化脚本:通过编写脚本自动执行文件操作,可以大大提高工作效率和减少人为错误。例如,批量重命名、自动备份等任务都可以通过Python脚本来实现。

正文

操作文本文件 

python中使用open()函数打开文件,例如:

file = open("filename.txt", "r")  # "r"表示读取模式

当然, 除了“r”这种模式,还有许多其他的模式,下面请看表格👋

文本文件打开模式
模式解释
r打开文件并读取数据
w打开文件并写入数据
a打开文件并添加数据
x独占创建模式。如果文件不存在,会创建一个新文件。如果文件已经存在,操作会失败
r+ / w+打开文件,并读取和写入数据
a+打开文件,并添加和读取数据

打开文件后也要关闭文件哦🧸

file = open("filename.txt", "r")  
file.close()

🐇对比一下r+、w+、a+,看例子:

r+和w+的效果都是一样的,运行一个: 

#文件的输入输出
file = open("filename.txt", "r+")  
file.write("Hello, World!")
file.close()

这里每次写入“hello world”都会覆盖之前的内容,所以无论运行几次都只有一个数据。 

 a+:

#文件的输入输出
file = open("filename.txt", "a+")
file.write("Hello, World!")
file.close()

 “a+”是在之前的基础上再次写入数据,所以每次运行的话,之前的信息都会保留。这里我运行了三次,也就是写入了三次的“hello world”。

🐇从文件中读取内容:

通过file.read()函数,可以将文件中的全部内容输出出来 ,如下:

file = open("filename.txt", "r")
read1=file.read()
print(read1)

 🐇读取文件中前20个字符:

file = open("filename.txt", "r")
read1=file.read(20)
print(read1)
print(len(read1))

这里呢,"W"前有一个空格键,之后再加上一个换行字符,正好20个字符。 

🐇还有一个可以一行一行读出数据的方法:

file = open("filename.txt", "r")
read1=file.readlines()
print(read1)
print(len(read1))

它将六行数据算作六个字符串,放入到一个列表中。 

我们也可以除掉后面的\n字符:line.strip()它是一个字符串方法,用于去除字符串两端的空白字符(例如空格、制表符、换行符等)。 

file = open("filename.txt", "r")
read1=file.readlines()
for line in read1:
    print(line.strip())
print(len(read1))

 操作二进制文件

二进制文件是一种计算机文件,其中包含的数据或程序指令以二进制形式编写。在计算机科学中,数据不仅包括字符,还有数字、颜色、音频、视频等。由于计算机内部只能处理二进制数据(即0和1),因此所有其他类型的数据都必须以二进制形式存储。

二进制文件有很多种类型,包括图片、音频、视频、可执行程序等。这些文件通常不能被文本编辑器直接打开或阅读,但可以使用特定的软件或程序来读取和编辑。

模式解释
rb打开二进制文件并读取数据
wb打开二进制文件并写入数据
ab打开二进制文件并添加数据
rb+打开二进制文件,并读取和写入数据
 wb+打开二进制文件,并读取和写入数据
ab+打开二进制文件,并添加和读取数据

打开一幅图片试试看:

file = open("test1.png", "rb+")
read1=file.readlines()
print(read1)

 

 二进制文件的写入:

import struct
file = open("test1.bat", "wb")
data=struct.pack('iii',5,2,3)

二进制读取:

import struct  
  
# 以二进制模式打开名为"test1.dat"的文件  
file = open("test1.dat","rb")  
  
# 使用struct模块的calcsize方法来计算一个整数(在这里是"i")所占的字节大小  
size = struct.calcsize("i")  
  
# 从文件中读取size字节的数据  
bytes_read = file.read(size)  
  
# 当读取的数据不为空时,循环执行以下操作  
while bytes_read:  
    # 使用struct模块的unpack方法将读取的字节数据转换为整数  
    value = struct.unpack("i",bytes_read)  
    # 取转换后的整数列表中的第一个值(因为可能存在多个整数,但这里只取第一个)  
    value = value[0]  
    # 打印这个整数值,并在其后添加一个空格  
    print(value, end=" ")  
    # 再次从文件中读取size字节的数据  
    bytes_read = file.read(size)  
  
# 关闭文件  
file.close()

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

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

相关文章

C# Onnx yolov8 竹签计数、一次性筷子计数

目录 效果 模型信息 项目 代码 数据集 下载 C# Onnx yolov8 竹签计数、一次性筷子计数 效果 模型信息 Model Properties ------------------------- date:2024-01-03T08:55:22.768617 author:Ultralytics task:detect license&#x…

一起来了解综合能源服务认证

首先,综合能源服务认证是有国家政策支持的, 《能源生产和消费革命战略(2016-2030)》中指出:1、能源生产端要以绿色低碳为方向,推动能源集中式和分布式开发并举,大幅提高新能源和可再生能源比重&#xff1b…

ELK生命周期

ELKkafka <es生命周期可视化配置界面> 一、创建索引模式 根据logstash中的日志规则 匹配对应系统日志 二、创建索引生命周期策略&#xff1a;可以控制生成索引的生命周期 共4个阶段&#xff1a;热阶段——温阶段——冷阶段——删除阶段 阶段1. hot: 索引被频繁写入和查…

如何让ArcGIS Pro启动显示空白页面

刚接触ArcGIS Pro的你是否会觉得在操作上有那么一些不习惯&#xff0c;从一开始软件启动就发现和ArcGIS差距很大&#xff1a;丰富的欢迎页面&#xff0c;加上默认加载的地图让你眼花缭乱&#xff0c;这里教你如何去掉这些繁杂的内容&#xff0c;还你一个干净的启动页面。 跳过…

一文弄懂SpringCloud Stream

目录 SpringCloud StreamSpringCloud Stream相关概念SpringCloud Stream使用 SpringCloud Stream Spring Cloud Stream 是一个构建消息驱动微服务的框架&#xff0c;Spring Cloud Stream 提供了一个抽象层&#xff0c;屏蔽了不同消息中间件之间的差异&#xff0c;使得开发人员…

Python 日志模块 logging 的最佳实践,内容干练简洁

文章目录 1. 引言2. 定义日志类3. 引用日志4. 参考 1. 引言 每次写 python 代码&#xff0c;想找一个日志模块 logging 的最佳实践&#xff0c;都要找一大圈&#xff0c;确不一定可以找到合适的最佳实践。 痛定思痛&#xff0c;我决定下笔记录目前觉得合适的 python 日志的用…

全志R128 SDK架构与目录结构

R128 S2 是全志提供的一款 M33(ARM)C906(RISCV-64)HIFI5(Xtensa) 三核异构 SoC&#xff0c;同时芯片内部 SIP 有 1M SRAM、8M LSPSRAM、8M HSPSRAM 以及 16M NORFLASH。本文档作为 R128 FreeRTOS SDK 开发指南&#xff0c;旨在帮助软件开发工程师、技术支持工程师快速上手&…

基于uniapp封装的card容器 带左右侧两侧标题内容区域

代码 <template><view class"card"><div class"x_flex_header"><div><title v-if"title ! " class"title" :title"title" :num"num"></title></div><div><s…

x-cmd pkg | magick - 开源图像处理工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 magick 是由 ImageMagick 提供的一个功能强大且多功能的开源图像处理工具&#xff0c;可以灵活高效地处理图像文件&#xff0c;例如格式转换、图像大小调整、图像裁减、图像拼接、图像色彩校正和图像合成等常见的图像…

云化XR技术于农业领域中的表现

随着科技的不断发展和应用的深入&#xff0c;农业领域也在逐渐引入新技术来优化生产效率和成本、改进管理和监控等。云化XR&#xff08;CloudXR&#xff09;作为一种融合了云计算、虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;等技术的解决方案&am…

【教程】代码混淆详解

【教程】代码混淆详解 本文将对代码混淆进行详细解释&#xff0c;并介绍ProGuard代码混淆器以及Ipa Guard工具的使用方法。首先&#xff0c;我们将了解代码混淆的概念和作用&#xff0c;然后深入讨论ProGuard混淆文件的参数设置以及代码混淆的方法。接着&#xff0c;我们将介绍…

【node link】Node命令中的node link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;NodeJs &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续前进的勇气…

【RabbitMQ】3 RabbitMQ使用及交换机

目录 代码示例交换机概述无名交换机绑定&#xff08;binding&#xff09;交换机的类型FanoutDirectTopic 官网地址&#xff1a;https://www.rabbitmq.com/getstarted.htm 代码示例 先来看下如何使用rabbitmq&#xff1a; 使用 Java 编写两个程序&#xff0c;发送单个消息的生…

10年工作经验老程序员推荐的7个开发类工具

做.NET软件工作已经10年了&#xff0c;从程序员做到高级程序员&#xff0c;再到技术主管&#xff0c;技术总监。见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio Team System 2008, Visual Studio 2010 Ultimate,Visual Studio 2013一系列近5个版本的变化与亲…

了解vcruntime140.dll文件,有效解决vcruntime140.dll的方法丢失

vcruntime140.dll丢失是一个常见的问题&#xff0c;一旦出现关于vcruntime140.dll丢失的错误弹窗就会导致各种应用程序无法正常启动或运行。本篇文章小编将带大家了解vcruntime140.dll文件&#xff0c;从vcruntime140.dll文件的来源到属性&#xff0c;一一给大家介绍&#xff0…

选择智能酒精壁炉,拥抱环保与未来生活

保护环境一直是我们共同的责任和目标&#xff0c;而在这场争取保护环境的斗争中&#xff0c;选择使用智能酒精壁炉而非传统壁炉成为了一种积极的行动。这不仅仅是对环境负责&#xff0c;更是对我们自身生活质量的关照。 传统壁炉与智能酒精壁炉的对比 传统壁炉常常以木柴、煤炭…

SpringBoot从数据库读取数据数据源配置信息,动态切换数据源

准备多个数据库 首先准备多个数据库&#xff0c;主库smiling-datasource&#xff0c;其它库test1、test2、test3 接下来&#xff0c;我们在主库smiling-datasource中&#xff0c;创建表databasesource&#xff0c;用于存储多数据源相关信息。表结构设计如下 创建好表之后&#…

高德地图vue-amap实现区域掩膜卫星图且背景为灰色

vue-amap高德1.4.4&#xff0c;区域掩膜效果 区域掩膜区域内展示卫星图&#xff0c;区域外背景灰色–>实现原理&#xff0c;先用灰色样式&#xff0c;当区域掩膜实现之后再添加卫星图层 效果如下&#xff1a; 代码如下&#xff1a; <template><div><div c…

使用kubesphere的devops部署SpringCloud项目

devops部署SpringCloud项目 环境说明部署流程创建DevOps工程填写流水线信息创建流水线jenkinsfileDockerfiledeploy.yaml 环境说明 已经安装kubesphere的devops组件安装教程可参考官方文档:https://v3-1.docs.kubesphere.io/zh/docs/pluggable-components/devops/ 部署流程 创…

【服务器数据恢复】Raid5热备盘同步失败导致lvm结构损坏的数据恢复案例

服务器数据恢复环境&#xff1a; 两组由4块磁盘组建的raid5磁盘阵列&#xff0c;两组raid5阵列划分为lun并组成了lvm结构&#xff0c;ext3文件系统。 服务器故障&#xff1a; 一组raid5阵列中的一块硬盘离线&#xff0c;热备盘自动上线并开始同步数据。在热备盘完成同步之前&am…