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

前言

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

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

正文

操作文本文件

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

python 复制代码
file = open("filename.txt", "r")  # "r"表示读取模式

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

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

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

python 复制代码
file = open("filename.txt", "r")  
file.close()

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

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

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

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

a+:

python 复制代码
#文件的输入输出
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个字符:

python 复制代码
file = open("filename.txt", "r")
read1=file.read(20)
print(read1)
print(len(read1))

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

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

python 复制代码
file = open("filename.txt", "r")
read1=file.readlines()
print(read1)
print(len(read1))

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

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

python 复制代码
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+ | 打开二进制文件,并添加和读取数据 |

打开一幅图片试试看:

python 复制代码
file = open("test1.png", "rb+")
read1=file.readlines()
print(read1)

二进制文件的写入:

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

二进制读取:

python 复制代码
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()
相关推荐
VidDown2 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频4 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林5 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li6 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook6 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
顽疲7 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
康小旺7 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
启观川7 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦8 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python