Python基础必掌握的文件读写操作详解
读取和写入文件等操作是 Python 可以完成的最常见任务之一。无论是写入简单的文本文件,读取复杂的服务器日志,甚至分析原始字节数据,进行相关的处理操作,最终所有这些情况都需要读取或写入文件。
整套学习自学教程中应用的数据都是《三國志》、《真·三國無雙》系列游戏中的内容。
文件的基本概念
文件是一组用于存储数据的连续字节。这些数据以特定格式组织,可以是文本文件等简单的文件,也可以是可执行程序等复杂的文件。这些字节文件然后被翻译成二进制文件1,0 便于计算机进行处理。
文件包含三个部分:
- Header: 关于文件内容的元数据(文件名、大小、类型等)。
- Data: 由创建者或编辑者编写的文件内容。
- EOF: 表示文件结束的特殊字符。
数据表示的内容取决于所使用的格式规范通常由扩展名表示。例如扩展名为.jpg最有可能符合图形交换格式规范的文件但未必是图片文件。
扩展名有数百甚至数千个文件扩展名。这里介绍 .txt 和 .csv 扩展名。
文件路径
访问文件需要文件路径,文件路径由字符串组成。其中包括三个部分:
- 文件夹路径: 文件系统上的文件夹位置,后续文件夹由正斜杠 / (Unix) 或反斜杠 \ (Windows) 分隔。
- 文件名: 文件的实际名称。
- 扩展名: 文件路径的末尾以句点 ( .) 开头,用于指示文件类型。
行尾
行尾可以追溯到摩尔斯电码时代,当时使用特定的前符号来传达传输的结束或行的结束。
Windows 使用 CR+LF 字符来表示新行,而 Unix 和较新的 Mac 版本仅使用LF字符。这些符号都是不可见,但是可以操作。
# windows
Hello World\r\n
Dynasty Warriors\r\n
字符编码
未来还会面临的一个字符数据编码的问题。两种最常见的编码是ASCII和UNICODE格式。
- ASCII 只能存储 128 个字符。
- Unicode 最多可以包含 1,114,112 个字符。
在 Python 中打开和关闭文件
调用 open() 内置函数来完成,其中包含一个文件路径的文件关键参数。
file = open('data.txt')
调用 .close() 对打开的文件进行关闭。
file.close()
可以调用 with语句 在执行打开操作模块后自动进行关闭。
with open('data.txt', 'r') as f:
.......
读写参数说明。
关键字 | 说明 |
---|---|
‘r’ | 打开阅读(默认) |
‘w’ | 打开写入,首先截断文件 |
‘a’ | 打开写入,如果存在则附加到文件的末尾 |
‘b’ | 二进制模式 |
‘t’ | 文本模式(默认) |
‘+’ | 打开磁盘文件进行更新(读写) |
‘U’ | 通用换行模式(为了向后兼容;不应在新代码中使用) |
读写参数组合。
模式 | 描述 |
---|---|
rt | 读取文本,默认模式 |
rb | 读取二进制数据 |
wt | 写入文本 |
wb | 写入二进制 |
r+ | 不清空原文件,读写 |
w+ | 清空原文件,并读写 |
a+ | 在文件末尾读写 |
文本文件类型
文本文件是您会遇到的最常见的文件。
# 打开方式举例
open('data.txt')
open('data.txt', 'r')
open('data.txt', 'w')
type(file)
<class '_io.TextIOWrapper'>
缓冲的二进制文件类型
# 打开方式举例
file = open('abc.txt', 'rb') # 读
type(file)
<class '_io.BufferedReader'>
file = open('abc.txt', 'wb') # 写
type(file)
<class '_io.BufferedWriter'>
原始文件类型
file = open('abc.txt', 'rb', buffering=0)
type(file)
<class '_io.FileIO'>
读写打开的文件
读取文件可以调用的方法。
# size这最多从该行中读取多个字符。这一直持续到行尾,然后回绕。如果没有传递或传递参数None,-1则读取整行(或该行的其余部分)。
.readline(size=-1)
# 这将从文件对象中读取剩余的行并将它们作为列表返回。
.readlines()
.read(size=-1),size字节数从文件中读取。如果没有传递或传递参数None,-1则读取整个文件。
with open('data.txt', 'r') as f:
print(f.read())
data data data
data data data
data data data
.readline(size=-1),从该行中读取多个字符。这一直持续到行尾,然后回绕。如果没有传递或传递参数None,-1则读取整行(或该行的其余部分)。
with open('data.txt', 'r') as f:
print(f.readline(2))
data data data
data data data
.readlines(),这将从文件对象中读取剩余的行并将它们作为列表返回。
with open('data.txt', 'r') as f:
print(f.readlines())
data data data
data data data
data data data
遍历文件中的每一行
.readline() 方法每次遍历一行。
with open('data.txt', 'r') as f:
line = f.readline()
while line != '':
print(line, end='')
line = f.readline()
data data data
data data data
data data data
.readlines() 方法返回一个列表,其中列表中的每个元素代表文件中的一行。
with open('data.txt', 'r') as f:
for line in f.readlines():
print(line, end='')
data data data
data data data
data data data
# 或者简化操作
with open('data.txt', 'r') as f:
for line in f:
print(line, end='')
data data data
data data data
data data data
文件的读写是相对的,方法和读取一样。
with open('data.txt', 'r') as f:
lines = f.readlines()
f.write(lines)
字节操作
使用字节字符串处理文件。这是通过将 ‘b’ 字符添加到参数来完成的。
with open('data.jpg', 'rb') as f:
print(f.readline())
b'\x89'
b'JPG'
b'\r\n'
b'\x1a'
b'\n'
相关文章
- Python脚本遍历文件夹,检查文件版本是否存在
- python 目录文件操作
- python分片下载文件
- Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集)
- Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略
- python --> Python初阶 --> 基础语法 --> 条件和分支
- 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】
- 〖Python零基础入门篇(52)〗- 文件操作的避坑指南
- 〖Python零基础入门篇(53)〗- 文件的读取
- 〖Python零基础入门篇(55)〗- yaml文件的读取
- 从零开始学习python | 实例讲解如何制作Python模式程序
- 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】
- python XML文件解析:用xml.dom.minidom来解析xml文件
- Python: yield, python 实现tail -f
- Python setup.py install 包含指定静态文件(打包时包含静态文件)
- 使用rdb文件进行redis数据迁移--python脚本
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 〖Python自动化办公篇⑯〗 - PPT 文件自动化 - PPT 段落的使用
- 〖Python自动化办公篇⑲〗 - python实现邮件自动化 - 邮件发送
- python-flask框架基础:传入字符、整形、浮点型、文件路径参数以及图片
- Python .py 文件打包成 .exe 文件(Windows平台,python 3.x)