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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章