需求:
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))