python实战案例笔记:统计出数据中路劲下没有文件的文件夹

news2025/2/8 23:47:37

数据样例:👇有如下excel数据

需求:有如下excel,a.xls,统计出路劲下没有文件的路劲

在这里插入图片描述

详细实现代码:

import os
from openpyxl import Workbook
from datetime import datetime

def get_empty_dirs(paths):
    # 将所有路径按目录和文件分类
    dirs = set()
    files = set()
    
    for path in paths:
        path = path.strip()
        if os.path.splitext(path)[1]:  # 有扩展名的视为文件
            files.add(os.path.dirname(path))  # 添加文件所在目录
            dirs.add(os.path.dirname(path))
        else:
            dirs.add(path)  # 无扩展名的视为目录
    
    # 找出没有文件的目录
    empty_dirs = dirs - files
    
    return sorted(empty_dirs)

def save_to_excel(empty_dirs):
    # 创建新的工作簿
    wb = Workbook()
    ws = wb.active
    ws.title = "空目录列表"
    
    # 添加标题行
    ws['A1'] = "序号"
    ws['B1'] = "空目录路径"
    
    # 写入数据
    for idx, dir_path in enumerate(empty_dirs, 1):
        ws[f'A{idx+1}'] = idx
        ws[f'B{idx+1}'] = dir_path
    
    # 设置列宽
    ws.column_dimensions['A'].width = 10
    ws.column_dimensions['B'].width = 100
    
    # 生成文件名(包含时间戳)
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = f'空目录统计_{timestamp}.xlsx'
    
    # 保存文件
    wb.save(filename)
    return filename

def main():
    # 读取a.xlsx中的路径
    with open('a.xlsx', 'r', encoding='utf-8') as f:
        paths = f.readlines()
    
    # 获取空目录
    empty_dirs = get_empty_dirs(paths)
    
    # 保存到Excel
    output_file = save_to_excel(empty_dirs)
    
    # 输出结果
    print(f"统计完成!")
    print(f"共找到 {len(empty_dirs)} 个空目录")
    print(f"结果已保存到: {output_file}")

if __name__ == '__main__':
    main()


最终打印输出的excel结果:
在这里插入图片描述
用.bat脚本删除这些空文件夹:

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 查找最新的统计文件
set "latest_file="
set "latest_time=0"

for %%F in (空目录统计_*.xlsx) do (
    set "file_time=%%~tF"
    if !file_time! gtr !latest_time! (
        set "latest_file=%%F"
        set "latest_time=!file_time!"
    )
)

if not defined latest_file (
    echo 未找到空目录统计文件!
    echo 请先运行Python脚本生成统计文件。
    pause
    exit /b 1
)

:: 创建临时文件
set "TEMP_FILE=%TEMP%\dirs_to_delete.txt"
if exist "%TEMP_FILE%" del "%TEMP_FILE%"

:: 使用Python读取Excel文件并输出到临时文件
python -c "import openpyxl; wb = openpyxl.load_workbook('%latest_file%'); ws = wb.active; [print(row[1].value) for row in ws.iter_rows(min_row=2) if row[1].value]" > "%TEMP_FILE%"

:: 显示要删除的目录列表
echo.
echo 从文件 %latest_file% 中读取到以下空目录:
echo -------------------
type "%TEMP_FILE%"
echo -------------------
echo.

:: 询问用户是否继续
set /p "confirm=是否确认删除这些目录?(Y/N): "
if /i "!confirm!"=="Y" (
    :: 从底层开始删除空目录
    for /f "delims=" %%a in ('type "%TEMP_FILE%" ^| sort /r') do (
        rd "%%a" 2>nul
        if !errorlevel!==0 (
            echo 已删除: %%a
        ) else (
            echo 删除失败: %%a
        )
    )
    echo.
    echo 删除操作完成!
) else (
    echo.
    echo 操作已取消。
)

:: 清理临时文件
del "%TEMP_FILE%" 2>nul

pause 

完美解决我的问题!!!

最后附上我的项目代码目录:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2266914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

API安全学习笔记

必要性 前后端分离已经成为web的一大趋势,通过TomcatNgnix(也可以中间有个Node.js),有效地进行解耦。并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器&#x…

金仓数据库对象访问权限的管理

基础知识 对象的分类 数据库的表、索引、视图、缺省值、规则、触发器等等,都称为数据库对象,对象分为如下两类: 模式(SCHEMA)对象:可以理解为一个存储目录,包含视图、索引、数据类型、函数和操作符等。非模式对象:其他的数据库对象&#x…

【连续学习之ResCL算法】2020年AAAI会议论文:Residual continual learning

1 介绍 年份:2020 会议: AAAI Lee J, Joo D, Hong H G, et al. Residual continual learning[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(04): 4553-4560. 本文提出的算法是Residual Continual Learning (ResC…

超时空跑跑新手池抽什么比较好 超时空跑跑风火水雷配队搭配

在超时空跑跑这款游戏中,各种角色分为风、火、水、雷四类,我们可以根据新手池抽出的角色进行搭配,今天就给大家推荐一下四种属性分别适合的队伍。 一、风系队 阵容搭配:关偃月方源少阳 1.关偃月的弹指次数可以持续很长的时间&am…

PHP实现登录和注册(附源码)

前言 本博客主要讲述利用php环境实现一个简单的前后端结合的用户登录和注册功能。phpstudy是PHP调试环境的集成包,该程序包集成了 ApachePHPMySQLphpMyAdmin 等多个工具,是很好用的调试环境的程序集成包。 目录 前言 1. 准备工作 1.1 工具 1.2 php…

HTTPS验证流程

http通常是直接和TCP进行通信的,而https中http是和SSL通信,再由SSL与TCP进行通信。SSL协议是一个介于应用层和传输层之间的一个安全协议。 1.对称加密与非对称加密 对称加密: 加密和解密方式都使用同一个私钥和公开的加密算法,优…

云手机:Instagram 矩阵搭建方案

云手机概述 1.亚矩阵云手机是依托先进的 ARM 虚拟化技术构建的云手机平台,综合运用云计算、大数据、人工智能及边缘计算等前沿技术,全方位支持各类安卓手机应用的使用与管理服务。借助全天候云端智能托管应用,用户能够突破终端设备的限制&…

指针详解之 多层嵌套的关系

1 例子之指向3个字符串的指针数组,易混淆! 1.1过程详解: char *str[3]{ "Hello,thisisasample!", "Hi,goodmorning.", "Helloworld" }; char s[80]; strcpy(s,str[0]); //也可写成strcpy(s,*st…

内置ALC的前置放大器D2538A/D3308

一、概述 D2538A/D3308是芯谷科技推出的带有ALC(自动电平控制)的前置音频放大器芯片,最初产品为单声道/立体声收录机及盒式录音机而开发,作为录音/回放的磁头放大器使用;由于产品的高增益、低噪声及ALC外部可调的特性&…

重发布和路由策略实验

需求:将1.1.1.0/24网段重发布到网络中,不允许出现次优路径,实现全网可达。1、在R1上重发布1.1.1.0/24网段,但是需要过滤192.168.12.0/24和192.168.13.0/242、在R2和R3上执行双向重发布因为R1引入的域外路由信息的优先级为150&…

低资源场景下的知识抽取

Information Extraction in Low-Resource Scenarios: Survey and Perspective Low-Resource & IE 技术解决方案 传统 1. 数据增强 概念:主要利用内源或外源辅助资源对原始小数据集进行数据增强或知识增强目标:创建更具代表性的样本并利用更高资源…

Pico “版权校验不通过:签名非法” 处理方法?

遇到 ”版权校验不通过“ 问题时,参考以下思路进行排查。 若应用的 APK 文件未上传至 PICO 开发者管理平台,参考以下排查思路: 检查应用包名,如果使用了 Unity 模板工程默认包名,比如 com.UnityTechnologies.com.uni…

去除 el-input 输入框的边框(element-ui@2.15.13)

dgqdgqdeMac-mini spid-admin % yarn list --pattern element-ui yarn list v1.22.22 └─ element-ui2.15.13 ✨ Done in 0.23s.dgqdgqdeMac-mini spid-admin % yarn list vue yarn list v1.22.22 warning Filtering by arguments is deprecated. Please use the pattern opt…

RCE-PLUS (学习记录)

源码 <?php error_reporting(0); highlight_file(__FILE__); function strCheck($cmd) {if(!preg_match("/\;|\&|\\$|\x09|\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){return($cmd);}else{die("i hate this"…

macrodroid通过http请求控制手机运行宏

macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…

产品初探Devops!以及AI如何赋能Devops?

DevOps源自Development&#xff08;开发&#xff09;和Operations&#xff08;运维&#xff09;的组合&#xff0c;是一种新的软件工程理念&#xff0c;旨在打破传统软件工程方法中“开发->测试->运维”的割裂模式&#xff0c;强调端到端高效一致的交付流程&#xff0c;实…

再谈c++线性关系求值

目的 线性关系是最简单的一种关系&#xff0c;在编程当中应用非常多&#xff0c;所以&#xff0c;再说一次线性关系。 线性关系的定义是这样的&#xff1a; 两个变量之间存在一次方函数关系&#xff0c;就称它们之间存在线性关系。正比例关系是线性关系中的特例&#xff0c;反…

“事务认证平台”:个人日常事务管理系统的诚信体系建设

3.1系统体系结构 系统的体系结构非常重要&#xff0c;往往决定了系统的质量和生命周期。针对不同的系统可以采用不同的系统体系结构。本系统为个人日常事务管理系统&#xff0c;属于开放式的平台&#xff0c;所以在体系结构中采用B/s。B/s结构抛弃了固定客户端要求&#xff0c;…

无人零售 4G 工业无线路由器赋能自助贩卖机高效运营

工业4G路由器为运营商赋予 “千里眼”&#xff0c;实现对贩卖机销售、库存、设备状态的远程精准监控&#xff0c;便于及时补货与维护&#xff1b;凭借强大的数据实时传输&#xff0c;助力深度洞察销售趋势、优化库存、挖掘商机&#xff1b;还能远程升级、保障交易安全、快速处理…

HTML制作一个普通的背景换肤案例2024版

一&#xff0c;完整的代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>换肤</t…