python学习:批量删除文件
需求:
1. 批量删除指定目录下文件名为奇数的文件
2. 显示删除前文件总数,删除后文件总数,列出删除的文件名
"""
思考:
1. 删除前后计算总数 , 应该用 方法,后面直接调用
2. 怎么筛选文件名 数字为奇数(A: 文件,B 数字是奇数) 可以用正则表达式
3. 删除前,存入list ,需要打印删除的文件
"""
直接上代码:
import os
import re
def get_file_number(path):
"""
统计出相应目录下的文件数量
:param path:
:return:
"""
total_file = os.listdir(path=path)
current = 0
for file_name in total_file:
abs_path = path + file_name
if os.path.isfile(abs_path):
current += 1
return current
def get_file(path):
"""
找出文件中为奇数的文件
:param path:
:return: 返回文件名称的集合
"""
total_file = os.listdir(path=path)
pattern = re.compile("[\w]+[13579].txt")
# 遍历
file_list2 = []
for i in total_file:
abs_path = path + i
if re.search(pattern, abs_path): # pattern.search(i)
file_list2.append(i)
print("奇数文件:", file_list2)
return file_list2
def del_file(path, files: list):
"""
:param path:
:param files:
:return:
"""
for i in files:
abs_path = path + i
if os.path.exists(abs_path):
os.remove(abs_path)
print("已删除文件:", abs_path)
if __name__ == "__main__":
# 1. 设定目录
dir_path = "E:" + os.path.sep + "Temp" + os.path.sep + "Demo" + os.path.sep
os.chdir(dir_path)
# 2. 获取文件名总数
file_number_list = get_file_number(dir_path)
# 3. 获取奇数文件名列表
file_list2 = get_file(dir_path)
print("删除前文件前数量:", get_file_number(dir_path))
# 4. 删除奇数文件
try:
del_file(dir_path, file_list2)
except:
print("文件删除异常")
else:
print("文件已经删除成功")
print("删除后的文件数量:", get_file_number(dir_path))
# 5 打印删除的文件列表
print("删除的文件如下:")
for i in file_list2:
print(i, end=" ")
运行结果:
#附创建多个文件的code:
# dir_path = "E:" + os.path.sep + "Temp" + os.path.sep + "Demo" + os.path.sep
# if not os.path.exists(dir_path):
# try:
# os.mkdir(dir_path)
# print("目录:" + dir_path + "创建成功!")
# except:
# print("文件创建异常")
# else:
# print("文件" + dir_path + "已经存在")
# # 2.构建文件名列表
# def get_file_name(num:int):
# current_number = 0
# file_name_list = []
# while current_number < num:
# file_name = "Test" + "%03d" % random.randint(0, 999) + ".txt"
# try:
# if file_name not in file_name_list:
# file_name_list.append(file_name)
# current_number += 1
# else:
# print("文件" + dir_path + "已经存在")
# except:
# print("文件" + dir_path + "已经存在")
# # 返回文件名列表
# return file_name_list
#
# name_list = get_file_name(10)
# print(name_list)
# # 3. 依次创建文件
#
# for name in name_list:
# file_name = dir_path + name
# try:
# global fd
# fd = open(file_name, mode="w", encoding="UTF-8")
# print("文件" + file_name + " 创建成功!")
# except:
# print("文件创建异常")
# finally:
# fd.close()
# 统计删除前文件总数
# 返回元祖 文件列表
# sum_file = os.listdir(dir_path)
# print(sum_file)
# print("删除前文件总数:", len(sum_file))