前言
系列文章目录
视频及资料和课件
链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234
提取码:1234
1 文件操作的作用
什么是文件?
计算机中的图片、word文档、视频等都是文件。
文件操作包含什么?
打开、关闭、读、写、复制…
⽂件操作的作⽤就是把⼀些内容(数据)存储存放起来,可以让程序下⼀次执⾏的时候直接使⽤,⽽不必重新制作⼀份。
2 文件的基本操作
2.1 文件操作步骤
- 打开⽂件
- 读写等操作
- 关闭⽂件
如果打开文件,不进行关闭,会一直占用和消耗计算机的资源。
注意:可以只打开和关闭⽂件,不进⾏任何读写操作。
2.1.1 打开文件
在python中,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件,语法如下:
open(name, mode)
- name:是要打开的⽬标⽂件的文件名(可以包含⽂件所在的具体路径)。
- mode:设置打开文件的模式(访问模式:只读、写入、追加等)。
注意:
w 和 a 模式:如果文件不存在,则创建该文件;如果文件存在,w 模式先清空再写入(用新内容覆盖原内容),a 模式直接在末尾追加。
r 模式:如果文件不存在会报错。
2.1.1.1 打开文件的模式
打开文件时,访问文件的模式可以省略,如果省略,则访问模式为 r (只读)。
打开文件的模式带 b,以二进制格式打开文件,打开文件的模式带 +,打开文件可读可写。
r w a之外的其他文件打开模式都是基础这三种模式进行扩展,基于r模式的扩展,如果文件不存在会报错,基于w模式的扩展,如果文件不存在,会创建该文件。
文件的指针相当于文件内容的光标。
以w模式及其扩展模式打开文件如果不写入内容,则会将文件中原有的内容清空。使用w+或wb+读取文件且不写入内容,则读取出来的内容为空(原有的内容已经被清空)。
以a+或ab+打开文件,读取文件中的内容,读取出来的内容为空( 文件的指针在末尾,读取文件内容从末尾向后读取,读取的内容为空 )。
2.1.1.2 打开文件体验
f = open('test.txt', 'w')
- 此时的 f 为 open 函数打开的文件对象。
- test.txt 为打开的文件名。
- w 以写入的模式打开文件。
2.1.2 文件对象的方法
2.1.2.1 文件的关闭
语法:
文件对象.close()
2.1.2.2 写入
语法:
文件对象.write('需要写入的内容')
# 以写入的模式打开文件 test.txt f = open('test.txt', 'w') # 向文件中写入 aaa f.write('aaa') # 关闭文件 f.close()
w 模式:如果文件不存在,则创建该文件;如果文件存在,w 模式先清空再写入。
2.1.2.3 读取
read()
语法:
文件对象.read(num)
- num:表示要从文件中读取的数据长度(单位是字节),如果没有传入num,表示读取文件中所有的数据。
# 打开文件 f = open('test.txt', 'r') # 没有传入num,表示读取文件中所有的数据。 print(f.read()) # 光标移动到开头 # 因为前面读取全部内容,光标已经挪到末尾 f.seek(0,0) # num 表示要从文件中读取的数据长度(单位是字节) # 文件中的内容如果存在换行,则有一个\n占一个字节 print(f.read(5)) # 关闭文件 f.close()
文件 test.txt 中的数据:
readlines()
readlines 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回一个列表,其中每一行的数据为一个元素。
# 打开文件 # 不写打开文件的方式,默认以只读 r 的模式打开文件 f = open('test.txt') # 读取文件 content = f.readlines() print(content) # 关闭文件 f.close()
readline()
readline 一次读取一行的内容。
# 打开文件 # 不写打开文件的方式,默认以只读的模式打开文件 f = open('test.txt') # 读取文件 while True: # 读取一行 content = f.readline() # 如果读取的当前行为空,退出循环 if not content: break # 打印读取出的行 print(content, end='') # 关闭文件 f.close()
2.1.2.4 移动文件指针
seek()
seek 可以用于移动文件内容的光标指针。
语法:
文件对象.seek(偏移量, 起始位置)
- 起始位置:
- 0:文件开头
- 1:当前位置
- 2:文件结尾
偏移量:从指定的起始位置开始,偏移的字节数。
# 以a的访问模式打开文件,文件指针在文件内容的末尾 f = open('test.txt', 'a+', encoding='utf-8') # 文件指针在最后,读取的内容为空 con = f.read() print(con) # 将文件指针移动到开头 # 从开始位置开始偏移1个字符 # 由于第一个字符为中文字符,编码为utf8,所以需要偏移三个字节 # utf8中一个中文字符三个字节 f.seek(3, 0) # 如果从开头位置偏移0个字节可以进行简写 # f.seek(0, 0) # => # f.seek(0) con = f.read() print(con) f.close()