百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python技能:文件读写速成!r、w、a、w+、a+、r+和他们的b版本?

off999 2024-11-03 14:20 30 浏览 0 评论

大家好,我是钢铁老豆!今天我们来聊聊一个超实用的编程技巧——如何在Python中读写文本和二进制文件。不论你是在处理日志文件,还是要保存那些看起来像是外星文字的二进制数据,掌握这些基础操作绝对能让你在编程路上走得更顺畅。就让我们一起来看看,用一点点代码怎么搞定这些看似复杂的操作!

1. 读写文本文件

1.1 读取文本文件

我们首先使用分步方式讲解文件的打开、读取、移动、关闭。

以'r'文本只读模式打开文件,默认系统字符编码,比如GBK、UTF-8,可选encoding显式设置,避免编解码问题。

支持多种读取方式,返回字符串类型,读取时指针位置随之移动。

# 'r'文本只读模式打开文件
f = open('example.txt', 'r', encoding='utf-8')

# 支持多种读取方式,返回字符串内容,指针位置随之移动

# 方式1:读取所有字符内容,指针随之移动到文件末尾
content = f.read()
print(content)

# 方式2:读取指定字符数量的内容,指针随之移动
f.seek(0)  # 重置指针为文件开头
content = f.read(123)  # 读取最多123个字符的内容
print(content)

# 方式3:读取单行字符串,指针随之移动到行末尾
f.seek(0)  # 重置指针为文件开头
first_line = f.readline() # 读取第一行,指针随之移动到第一行末尾
print(first_line)
second_line = f.readline()  # 读取第二行,指针随之移动到第二行末尾
print(second_line)

# 方式4:读取所有行字符串,返回列表,指针随之移动到文件末尾
f.seek(0)  # 重置指针为文件开头
lines = f.readlines()  # 读取所有行字符串,返回字符串列表
print(lines)

# 修改指针位置,第一个参数表字节偏移量,第二个参数表偏移量相对位置(默认0表文件开头,1表当前位置,2表文件末尾)
## 修改指针位置为文件开头
f.seek(0)  # 相当于f.seek(0, 0)
## 修改指针位置为文件末尾
f.seek(0, 2)
## 修改指针位置为文件其他字节偏移量,不建议文本模式下使用,因为比如1个UTF-8编码的字符可能占用多个字节,如果指针刚好移动到多个字节中间,大概率导致后续读取出错
f.seek(123)  # 相当于f.seek(123, 0)

# 获取指针位置,返回字节偏移量,告诉你文件经过上述read/readline/readlines操作后,读取到哪个位置了
f.tell()

# 关闭文件
f.close()

通常会改用上下文管理器(with关键字)来自动管理文件的关闭操作:

  • 进入with代码块时,自动执行文件对象的__enter__方法
  • 退出with代码块时,自动执行文件对象的__exit__方法 (调用close方法)
with open('example.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

1.2 写入文本文件

同样地,我们使用分步方式讲解文件的打开、写入、移动、关闭。

多种文本写模式打开文件,写入单条或多条字符串。

# 写模式打开文件,支持多种模式:
# w:文件不存在新建,存在则清空原有内容再写入
# a:文件不存在新建,存在则原有内容后追加写入
# w+:w写入基础上,同时支持读取
# a+:a追加基础上,同时支持读取
# r+:文件不存在抛出异常,存在则原有内容任意位置开始写入,同时支持读取
f = open('example.txt', 'w', encoding='utf-8')

# 写入单条字符串,不自动添加换行符\n,需要自己手动包含
f.write('Hello, world!\n')

# 写入多条字符串,同样不自动添加换行符\n,需要自己手动包含
lines = ["第一行\n", "第二行\n", "第三行\n"]
f.writelines(lines)

# 关闭文件,此时内容才正式写入文件,对用户或其他程序可见
f.close()

同样地,通常会改用上下文管理器(with关键字)来自动管理文件的关闭操作:

lines = ["第一行\n", "第二行\n", "第三行\n"]
with open('example.txt', 'w', encoding='utf-8') as file:
    file.writelines(lines)

2.读写二进制文件

二进制文件的读写,与文本文件类似,但模式需要添加b后缀,读写内容以字节串类型表示。

2.1 读取二进制文件

以'rb'二进制只读模式打开文件,无需指定字符编码,因为非文本。

支持多种读取方式,返回bytes字节串类型,读取时指针位置随之移动。

# 'rb'二进制只读模式打开文件
with open('example.bin', 'rb') as f:
    # 支持多种读取方式,指针位置随之移动
    
    # 方式1:读取所有字节内容
    content = f.read()
    print(content)
    
    # 方式2:读取指定字节数量的内容
    f.seek(0)  # 重置指针位置为文件开头
    content = f.read(123)  # 读取最多123个字节数量的内容
    print(content)
    
    # 方式3:读取单行字节串内容
    f.seek(0)  # 重置指针位置为文件开头
    line = f.readline()  # 读取单行字节串,遇到b'\n'返回
    print(line)
    
    # 方式4:读取所有行字节串内容
    f.seek(0)  # 重置指针位置为文件开头
    lines = f.readlines()  # 读取所有行字节串内容,返回字节串列表
    print(lines)

2.2 写入二进制文件

多种二进制写模式打开文件,写入单条或多条字节串。

# 二进制写模式打开文件,支持多种模式:
# wb:文件不存在新建,存在则清空原有内容再写入
# ab:文件不存在新建,存在则原有内容后追加写入
# wb+:w写入基础上,同时支持读取
# ab+:a追加基础上,同时支持读取
# rb+:文件不存在抛出异常,存在则原有内容任意位置开始写入,同时支持读取
with open('example.bin', 'wb') as f:   
    # 写入单条字节串
    f.write(b'\x00\x01\x02\x03')
    # 写入多条字节串,这里我简单复制了3条
    lines = [b'\x00\x01\x02\x03'] * 3
    f.writelines(lines)

3. 完整参考

想要更深入地了解如何在Python中操作文件?可以访问Python官方文档,那里有你需要的所有详细信息。

https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

以上就是今天的分享,希望对大家有所帮助!如果觉得有用,不妨点个赞、收藏、留言或关注我吧!每天学习一点Python小知识,这里有你感兴趣的基础、技能、数据、模型和AI。我是钢铁老豆,一个30岁转行IT、自学成为算法工程师、想用AI点亮孩子小小世界的Pythoner。

相关推荐

大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍

“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...

电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器

在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...

设置了加密密码zip文件要如何打开?这几个方法可以试试~

Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...

高效处理 RAR 分卷压缩包:合并解压操作全攻略

在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...

2个方法教你如何删除ZIP压缩包密码

zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...

速转!漏洞预警丨压缩软件Winrar目录穿越漏洞

WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...

文件解压方法和工具分享_文件解压工具下载

压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...

[python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...

Python内置tarfile模块:读写 tar 归档文件详解

一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...

使用python展开tar包_python拓展

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...

银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留

近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...

ZIP文件怎么打开?2个简单方法教你轻松搞定!

在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...

Ubuntu—解压多个zip压缩文件.zip .z01 .z02

方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...

如何使用7-Zip对文件进行加密压缩

7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...

取消回复欢迎 发表评论: