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()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (I)

Title: 非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (I) 文章目录 前言I. 从高斯-牛顿法II. 到阻尼高斯-牛顿法III. 再到列文伯格-马夸尔特法1. 列文伯格-马夸尔特法的由来2. 列文伯格-马夸尔特法的说明说明一. 迭代方向说明二. 近似于带权重的梯度…

步进电机介绍

一、什么是步进电机: 步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步…

通付盾受邀出席2024安全市场年度大会,荣获“数字安全产业杰出贡献奖”!

1月5日,由国内数字产业独立的第三方调研咨询机构数世咨询主办,以“数字安全,未来可期”为主题的2024安全市场年度大会在北京举办。来自国内网络安全厂商300多人以线上线下方式参加本次大会,通过4个多小时高能演讲,聚焦…

线性代数_同济第七版

contents 前言第1章 行列式1.1 二阶与三阶行列式1.1.1 二元线性方程组与二阶行列所式1.1.2 三阶行列式 1.2 全排列和对换1.2.1 排列及其逆序数1.2.2 对换 1.3 n 阶行列式的定义1.4 行列式的性质1.5 行列式按行(列)展开1.5.1 引理1.5.2 定理1.5.3 推论 * …

【Vue】项目使用px2rem

使用方法 1.安装包 npm i postcss-px2rem2.编写配置文件 编写核心代码,命名随意,我这里命名为px2rem并放在src/utils文件夹内 // 基准大小 const baseSize 100 // 设置 rem 函数 function setRem() {// 当前页面宽度相对于 1920 宽的缩放比例&#xf…

RK3568平台开发系列讲解(驱动篇)pinctrl 函数操作集结构体讲解

🚀返回专栏总目录 文章目录 一、pinctrl_ops二、pinmux_ops三、pinconf_ops沉淀、分享、成长,让自己和他人都能有所收获!😄 pinctrl_ops:提供有关属于引脚组的引脚的信息。pinmux_ops:选择连接到该引脚的功能。pinconf_ops:设置引脚属性(上拉,下拉,开漏,强度等)。…

安全防御之可信计算技术

可信计算技术是一种计算机安全体系结构,旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。它通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段,确保计算机系统在各种攻击和威胁下保持高度安全和保密性。 一、可信计算基…

WPS Office找回丢失的工作文件

WPS office恢复办公文件方法有两种. 1.通过备份中心可以查看近期编辑 office 历史版本进行恢复. 2.缓存备份目录可以查看编辑过的 office 文件的历史版本,新版本 WPS 可以在配置工具-备份清理找到,2019 年旧版本 WPS 可以在新建任意 office 文件-文件-选…

【Java 设计模式】设计原则之单一职责原则

文章目录 1. 定义2. 好处3. 应用4. 示例结语 在面向对象设计中,单一职责原则是一个重要的设计原则之一。它提倡一个类应该只有一个原因引起变化,即一个类应该只有一个职责。在本文中,我们将深入研究单一职责原则,了解它的定义、优…

有信息搜索、最佳优先搜索、贪心搜索、A_搜索详解

文章目录 【人工智能】— 有信息搜索、最佳优先搜索、贪心搜索、A*搜索无/有信息的搜索Informed Search AlgorithmsBest-first search(最佳优先搜索)Greedy SearchA* Search解释说明A*搜索是代价最优的和完备的对搜索等值线如何理解【人工智能】— 有信息搜索、最佳优先搜索、贪…

异构微服务远程调用如何打jar包

1.服务提供方打 jar 包 RemoteUserService.java package com.finance.system.api;import com.finance.system.api.domain.dto.Enterprise; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springfra…

项目-新闻头条-数据管理平台-ajax综合案例

愿许秋风知我意&#xff0c;解我心中意难平。 项目介绍 项目准备 推荐使用&#xff0c; 每个程序员都有自己的管理方式。 验证码登录 HTML结构&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><met…

Linux网络的命令和配置

目录 一、网络配置命令 1、配置和管理网络接口 1.1 ifconfig 1.2 ip 1.2.1 ip link 1.2.2 ip addr 1.3 修改网络接口名 1.3.1 临时修改网络接口名 1.3.2 永久修改网络接口名 1.4 永久配置单网卡 1.5 永久配置双网卡 1.6 ethtool 2、查看和设置主机中路由表信息…

国芯科技荣膺高工智能汽车“年度车规MCU高成长供应商”,加速产品精准化系列化布局

2023年12月13—15日&#xff0c;2023&#xff08;第七届&#xff09;高工智能汽车年会在上海召开&#xff0c;大会以“寻找拐点”为主题&#xff0c;通过超80场主题演讲及多场圆桌对话&#xff0c;为智能汽车赛道参与者「备战2024」提供全方位的决策支持。 作为汽车电子芯片领…

基于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…

【C++】十大排序算法

文章目录 十大排序算法插入排序O(n^2^)冒泡排序O(n^2^)选择排序O(n^2^)希尔排序——缩小增量排序O(nlogn)快速排序O(nlogn)堆排序O(nlogn)归并排序(nlogn)计数排序O(nk)基数排序O(n*k)桶排序O(nk) 十大排序算法 排序算法的稳定性&#xff1a;在具有多个相同关键字的记录中&…

【面试高频算法解析】算法练习8 单调队列

前言 本专栏旨在通过分类学习算法&#xff0c;使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目&#xff0c;帮助您深度理解每种算法&#xff0c;避免出现刷了很多算法题&#xff0c;还是一知半解的状态 专栏导航 二分查找回溯&#xff08;Backtracking&…

Hive之set参数大全-6

L 指定是否启用延迟评估&#xff08;lazy evaluation&#xff09;的扩展布尔字面量 在 Apache Hive 中&#xff0c;hive.lazysimple.extended_boolean_literal 是一个配置属性&#xff0c;用于指定是否启用延迟评估&#xff08;lazy evaluation&#xff09;的扩展布尔字面量。…

C++-UI入门

1、QWidget类 QWidget类时所有组件和窗口的基类。内部包含了一些最基础的界面特性。 常用属性&#xff1a; 1.1修改坐标 x : const int 横坐标&#xff0c;每个图形的左上角为定位点&#xff0c;横轴的零点在屏幕的最左边&#xff0c;正方向向右。 y : const int 纵坐标&#x…

【Machine Learning】Generalization Theory

本笔记基于清华大学《机器学习》的课程讲义中泛化理论相关部分&#xff0c;基本为笔者在考试前一两天所作的Cheat Sheet。内容较多&#xff0c;并不详细&#xff0c;主要作为复习和记忆的资料。 No free lunch For algroithm A ′ A A′, exsits f f f that is perfect answ…