1.文件操作的作用
⽂件操作的作⽤就是把⼀些内容(数据)存储存放起来,可以让程序下⼀次执⾏的时候直接使⽤,⽽不必重新制作⼀份,省时省⼒
2.文件的基本操作
2.1文件的操作步骤
- 打开⽂件
- 读写等操作
- 关闭⽂件
注意:可以只打开和关闭⽂件,不进⾏任何读写操作
2.1.1打开文件
在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件
语法:open(name, mode)
解释:
**name:**是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)。
**mode:**设置打开⽂件的模式(访问模式):只读、写⼊、追加等
mode的分类:
mode类型 | 说明(标黄的mode重点关注) |
---|---|
r | 以只读⽅式打开⽂件。⽂件的指针将会放在⽂件的开头。这是默认模式。 |
rb | 以⼆进制格式打开⼀个⽂件⽤于只读。⽂件指针将会放在⽂件的开头。这是默认模式。 |
r+ | 打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。 |
rb+ | 以⼆进制格式打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。 |
w | 打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。 |
wb | 以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。 |
w+ | 打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。 |
wb+ | 以⼆进制格式打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。 |
a | 打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。 |
ab | 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。 |
a+ | 打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写。 |
ab+ | 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。如果该⽂件不存在,创建新⽂件⽤于读写 |
示例:(打开文件)
f=open('test.txt','w')#打开文件test.txt并进行读操作
#注意:此时的 f 是 open 函数的⽂件对象
示例:(文件的写操作)
语法:对象.write('内容‘)
f=open('test.txt','w')
#打开文件
f.write('hello wrld')
#对文件执行写操作
f.close
#关闭文件,这一步是必不可少的
注意事项:
1. w 和 a 模式:如果⽂件不存在则创建该⽂件;如果⽂件存在, w 模式先清空再写⼊, a 模式直接末尾追加。
2. r 模式:如果⽂件不存在则报错
示例:(read文件的读操作)
语法:⽂件对象.read(num)
f=open('test.txt')
con=f.read()
print(con)
f.close#此时必须加这个关闭文件的命令
注意事项: num表示要从⽂件中读取的数据的⻓度(单位是字节),如果没有传⼊num,那么就表示读取⽂件中所有的数据
示例:(readlines()解释:readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏
的数据为⼀个元素)
f = open('test.txt')
content = f.readlines()
print(content)#此时返回的是一个列表,一个数据为文件中的一行数据
# 关闭⽂件
f.close()
示例:(readline()一次读取一行数据)
f=open('test.txt')
first_line=f.readline()
print(f'第一行数据是:{first_line}')
second_line=f.readline()
print(f'第二行的数据是:{second_line}')
f.close#关闭文件
示例:(seek用来移动文件的指针)
语法;⽂件对象.seek(偏移量, 起始位置)
起始位置:
0:⽂件开头
1:当前位置
2:⽂件结尾
3.文件备份
1.实现的功能
⽤户输⼊当前⽬录下任意⽂件名,程序完成对该⽂件的备份功能(备份⽂件名为xx[备份]后缀,例如:test[备份].txt)
2.实现的步骤
1. 接收⽤户输⼊的⽂件名
2. 规划备份⽂件名
3. 备份⽂件写⼊数据
3.代码的实现
# 1. 接收⽤户输⼊的⽂件名
file_name=input('请输入需要备份的文件名:')#输入test.txt
# 2. 规划备份⽂件名test[备份].txt
#2.1 提取⽬标⽂件后缀
index = file_name.rfind('.')#找到文件名中.的下标位置
#2.2 组织备份的⽂件名,xx[备份]后缀
print(index) # 后缀中.的下标
print(file_name[:index]) # 源⽂件名(⽆后缀)test
print(file_name[index:])#.txt
copy_filename=file_name[:index]+'[备份]'+file_name[index:]
print(copy_filename)
# 3. 备份⽂件写⼊数据
# 3.1 打开源⽂件 和 备份⽂件
file=open(file_name,'rb')
new_file=open(copy_filename,'wb')
# 3.2 将源⽂件数据写⼊备份⽂件
while True:
con=file.read()
if len(con)==0:
break
new_file.write(con)
# 3.3 关闭⽂件
file.close
new_file.close
如果输入的文件是.txt是不合格的文件名(file_name),此时是需要提前判断文件名是否符合要求
修改后的程序为:
while True:
# 1. 接收⽤户输⼊的⽂件名
file_name=input('请输入需要备份的文件名:')#输入test.txt
# 2. 规划备份⽂件名test[备份].txt
#2.1 提取⽬标⽂件后缀
index = file_name.rfind('.')#找到文件名中.的下标位置
if index>0:
#2.2 组织备份的⽂件名,xx[备份]后缀
# print(index) # 后缀中.的下标
# print(file_name[:index]) # 源⽂件名(⽆后缀)test
# print(file_name[index:])#.txt
copy_filename=file_name[:index]+'[备份]'+file_name[index:]
print(copy_filename)
# 3. 备份⽂件写⼊数据
# 3.1 打开源⽂件 和 备份⽂件
file=open(file_name,'rb')
new_file=open(copy_filename,'wb')
# 3.2 将源⽂件数据写⼊备份⽂件
while True:
con=file.read()
if len(con)==0:
break
new_file.write(con)
# 3.3 关闭⽂件
file.close
new_file.close
break
else:
print(f'你输入的文件名为:{file_name},不符合要求')
4.文件和文件夹操作
在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,具体步骤如下:
1导入os模块(import os)
2.使用os模块里的函数(os.函数名())
1)文件重命名
os.rename(⽬标⽂件名, 新⽂件名)
2)删除文件
os.remove(⽬标⽂件名)
3)创建文件夹
os.mkdir(⽂件夹名字)
4)删除文件夹
os.rmdir(⽂件夹名字)
5)获取当前目录
os.getcwd()
6)改变默认目录
os.chdir(⽬录)
7)获取目录列表
os.listdir(⽬录)
示例:
实现的功能:
需求:批量修改⽂件名,既可添加指定字符串,⼜能删除指定字符串。
步骤
- 设置添加删除字符串的的标识
- 获取指定⽬录的所有⽂件
- 将原有⽂件名添加/删除指定字符串,构造新名字
- os.rename()重命名
import os
# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag = 1
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)
# 遍历⽂件列表内的⽂件
for name in file_list:
# 添加指定字符
if flag == 1:
new_name = 'Python-' + name
# 删除指定字符
elif flag == 2:
num = len('Python-')
new_name = name[num:]
# 打印新⽂件名,测试程序正确性
print(new_name)
# 重命名
os.rename(dir_name+name, dir_name+new_name)
修改后的程序更加方便;
import os
# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag =int(input('请输入你想要执行的操作1为添加字符2为删除字符:'))
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)
# 遍历⽂件列表内的⽂件
file_name=input('请输入需要修改的文件名:')
for name in file_list:
# 添加指定字符
if name==file_name:
str_new=input('请输入需要添加的字符:')
if flag == 1:
new_name = str_new + name
# 删除指定字符
elif flag == 2:
num = len(str_new)
new_name = name[num:]
else:
print('你输入的文件名不存在')
# 打印新⽂件名,测试程序正确性
print(new_name)
# 重命名
os.rename(dir_name+name, dir_name+new_name)