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

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值