一、作用
思考:文件操作包含什么?
答:打开、关闭、读、写、复制。。。
思考:文件操作的作用是什么?
答:读取内容、写入内容、备份内容
总结:文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
二、基本操作
2.1 文件操作的步骤
- 打开文件
- 读写等操作
- 关闭文件
注意:可以只打开和关闭文件,不进行任何读写操作
2.1.1 文件打开模式
在python使用open函数,可以打开一个已经 存在的文件,或者创建一个新的文件open(name, mode) # name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 # mode:设置打开文件的模式(访问模式):只读、写入、追加等。
-
打开方式
- 访问模式主模式讲解
''' 测试: 1.访问模式对文件的影响 2.访问模式对write()的影响 3.访问模式是否可以省略 ''' # r:如果文件不存在,报错;不支持写入操作,表示只读 f = open('test.txt','r') # test.txt文件存在,可以使用只读模式打开,并且文件成功关闭 # f = open('test1.txt','r') # test1.txt文件不存在,无法读取,报错 # f.write('aaa') # 只读模式无法写入数据 f.close() # w:只写,文件如果不存在,则新建文件;执行写入,会覆盖原有内容 f1 = open('1.txt','w') # 新建1.txt文件 f1.write('aaa') # 写入'aaa' f1.write('bbb') # 覆盖原内容写入'bbb' f1.close() # a:追加,如果文件不存在,新建文件;在原内容的基础上,追加新内容 f2 = open('2.txt','a') f2.write('aaa') # f2.write('zxc') f2.close() #访问模式可以省略,默认为只读模式 f3 = open('test.txt') f3 = open('100.txt') # 报错 f3.close()
- 其他访问模式
''' 测试目标: 1.r+、w+、a+区别 2.文件指针对数据读取的影响 ''' # r+:如果没有文件则报错;文件指针在开头,所以可以读取出来数据 # f = open('test.txt', 'r+') # f = open('test1.txt', 'r+') # w+:没有该文件会新建文件;文件指针在开头;新内容会覆盖旧内容 # f = open('test1.txt', 'w+') # f = open('test.txt', 'w+') # a+:没有该文件会新建文件;文件指针在结尾,无法读取数据(指针后面没有数据) # f = open('test100.txt', 'a+') f = open('test.txt', 'a+') print(f.read()) content = f.read() print(content) f.close()
- 2.1.2.1 写
语法
对象.write('内容')
-
注意:
- w 和 a 模式:如果文件不存在则创建该文件;如果文件存在, w 模式先清空再写入, a模式直接末尾追加。
- r 模式:如果文件不存在则报错。
-
2.1.2.2 读
-
read()
文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读
取文件中所有的数据。 readlines()
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。readline()
一次读取一行内容
-
-
2.1.2.3 移动文件指针
- 语法
文件对象.seek(偏移量,起始位置)
起始位置:
- 0:文件开头
- 1:当前位置
- 2:文件结尾
- 语法
2.1.2.4 关闭
文件对象.close()
-
三、文件备份
3.1 步骤
- 接收用户输入的文件名
- 规划备份文件名
- 备份文件写入数据
3.2 实现
# 1.用户输入目标文件 jinghang.mp3.txt
old_name = input('请输入您要备份的文件名:')
# print(old_name)
# 2.规划备份文件的名字
# 提取后缀 -- 找到后缀前的. -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个字串
rfind index = old_name.rfind('.')
# print(index)
# 以.分割开原文件名并在修改后进行拼接 新名字 = 原名字 + [备份] + 后缀 # 使用切片[开始:结尾:步长]获取原文件名称和后缀
print(old_name[:index])
print(old_name[index:])
new_name = old_name[:index] + '[备份]' + old_name[index:]
print(new_name)
# 3.备份文件写入数据(确保数据和源文件一样)
old_f = open(old_name,'rb')
new_f = open(new_name,'wb')
# 如果不确定目标文件大小,循环读取写入,当读取出来的数据为空则终止循环
while True:
content = old_f.read(1024)
if len(content) == 0:
break
new_f.write(content)
# 4.关闭文件
old_f.close()
new_f.close()
3.3 优化
# 2.规划备份文件的名字
# 提取后缀 -- 找到后缀前的. -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个字串 rfind
index = old_name.rfind('.')
# print(index)
if index > 0:
suffix = old_name[index:]
# 以.分割开原文件名并在修改后进行拼接 新名字 = 原名字 + [备份] + 后缀
# 使用切片[开始:结尾:步长]获取原文件名称和后缀
# print(old_name[:index])
# print(old_name[index:])
# new_name = old_name[:index] + '[备份]' + old_name[index:]
new_name = old_name[:index] + '[备份]' + suffix
print(new_name)
四、文件和文件夹的操作
在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:
- 导入os模块
import os
- 使用os模块相关功能
os.函数名()
4.1 文件重命名
os.rename(目标文件名,新文件名)
4.2 删除文件
os.remove(目标文件名)
4.3 创建文件夹
os.mkdir(文件夹名字)
4.4 删除文件夹
os.rmdir(文件夹名字)
4.5 获取当前目录
os.getcwd()
4.6 改变默认目录
os.chdir(目录)
4.7 获取目录列表
os.listdir(目录)