目录
1. IO操作

- IO:在计算机里面指流的输入和输出。这里的输入和输出是相对于电脑内存来说的。
- 输入:输入是指数据从磁盘或者网络流入内存的一个过程。
- 输出:输出是指数据从内存流出外部网络或者磁盘的一个过程。
1.1 文件操作步骤
- 打开文件
- 操作文件:读/写/追加内容
- 关闭文件(读写完成要及时关闭文件,不关闭会对内存有很大的消耗)
1.2 文件操作API
1.2.1 打开方法
1.2.1.1 open()
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
#必填参数:file
#重要参数: mode、encoding
-
file:必填参数,要打开的文件的路径,相对路径、绝对路径都可。
-
mode:重要参数,读取模式,默认值:rt。通过读取模式来定义对文件读取方式。
-
buffering:缓冲区大小。
- 0:关闭缓冲区,只有在二进制模式下才可用;
- 1:遇到换行符后则写磁盘(只有在文本模式下才生效);
- 大于1:设置固定大小的缓冲区;
- 未指定buffering参数值的话:
- “交互式”文本文件使用行缓冲。其他文件模式参考二进制的方式。
- 二进制文件,缓冲区大小固定。缓冲区的大小根据基础设备的大小来设定。多数系统中使用的是4096个字节或者8912字节。
数据不是实时去写入磁盘的,一般先放置在缓冲区中,等到缓冲区满后再集中写入磁盘中。
-
encoding:重要参数,操作文件时的编码格式。如果文件中存在中文,就需要设置一个编码格式。
-
errors:遇到编码或解码错误的时候,是忽略还是抛出异常。
-
newline:换行符,用于控制换行符。指定换行符是\r、\n还是\r\n。
-
closefd:文件描述符。使用很少,了解即可。
注意:此处展示的python3中的方法,python2与python3有不同。
1.2.1.2 文件读写模式
| 文件打开模式 | 描述 |
|---|---|
| r | 以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错。 |
| w | 以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建。 |
| a | 以只追加可写模式打开文件夹,并将文件指针指向文件胃部;如果文件不存在则创建 |
| r+ | 在r的基础上增加可写功能 |
| w+ | 在w的基础上增加可读工能 |
| a+ | 在a的基础上增加可读功能 |
| b | 读写二进制文件(默认t,表示文本),需要与上面几种模式搭配使用,如:ab,wb,ab+(POSIX系统,包括Linux都会忽略该字符) |
1.2.2 读操作
| 方法 | 描述 |
|---|---|
| read() | 一次读取文件所有内容,返回一个str |
| read(size) | 每次最多读取指定长度的内容,返回一个str; 在Python2中size指定的是字节长度,在python3中size指定的是字符长度 |
| readlines() | 一次杜宇文件所有内容,按行返回一个list |
| readline() | 每次只读取一行内容 |
1.2.2.1 read()
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')
#第二步:读取文件中内容
print(f.read())
#第三步:关闭文件
f.close()
"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
"""
1.2.2.2 read(size)
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')
#第二步:读取文件
print(f.read(7))
#第三步:关闭文件
f.close()
"""
打印结果:
Hello P
"""
#注意:换行、空格也会占字符
1.2.2.3 readlines()
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')
#第二步:读取文件
print(f.readlines())
#第三步:关闭文件
f.close()
"""
打印结果:
['Hello Python!\n', 'Hello Stanger!\n', 'Hello!']
"""
#示例1:
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')
#第二步:读取文件
print(f.read())
print(f.readlines())
#第三步:关闭文件
f.close()
"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
[]
"""
#注意:readlines返回的是空列表,是因为,read()操作的时候已经将文件中的内容读取完,此时游标移动到最后一行,这时在readline的时候读取到的是空的。
#示例2:
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')
#第二步:读取文件
print(f.read())
#设置游标位置
f.seek(0)
print(f.readlines())
#第三步:关闭文件
f.close()
"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
['Hello Python!\n', 'Hello Stanger!\n', 'Hello!']
"""
# 设置游标位置后,readlines()返回的不是空列表
1.2.2.4 readline()
#第一步:(只读模式)打开文件
f=open('data.txt','r',encoding='UTF-8')
#第二步:按行读取文件
print(f.readline())
print(f.readline())
#第三步:关闭文件
f.close()
"""
打印结果:
Hello Python!
Hello Stanger!
"""
#注意:readline()会有一个换行,print会有一个换行,因此打印读取内容后,会出现两个换行。
1.3 忘记关闭文件的危害
- 打开文件达到一定数量,将会导致打开失败。
- 占用内存空间,非常浪费资源。
- 会导致系统自动回收资源,而丢失数据。
1.4 With用法
with open('data.txt','r',encoding='UTF-8') as f:
print(f.read())
print(f.close())
"""
打印结果:
Hello Python!
Hello Stanger!
Hello!
None
"""
#使用with用法,文件用完后自动关闭。
1.5 总结
- 使用with方法,会自动完成文件关闭操作。
- 通过python封装的API,可以实现文件的读、写、追加操作
- 文件打开要使用utf-8的编码格式(以免中文出现乱码)
本文详细介绍了Python中的IO操作,包括文件的打开、读写模式、API使用以及读操作的方法,如read()、readline()和readlines()。强调了忘记关闭文件的危害,并推荐使用with语句自动管理文件关闭。此外,还讲解了文件操作中的编码和错误处理策略。

被折叠的 条评论
为什么被折叠?



