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

embedded/2024/12/28 10:40:19/

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

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

在这里插入图片描述

详细实现代码:

python">import os
from openpyxl import Workbook
from datetime import datetimedef 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 - filesreturn sorted(empty_dirs)def save_to_excel(empty_dirs):# 创建新的工作簿wb = Workbook()ws = wb.activews.title = "空目录列表"# 添加标题行ws['A1'] = "序号"ws['B1'] = "空目录路径"# 写入数据for idx, dir_path in enumerate(empty_dirs, 1):ws[f'A{idx+1}'] = idxws[f'B{idx+1}'] = dir_path# 设置列宽ws.column_dimensions['A'].width = 10ws.column_dimensions['B'].width = 100# 生成文件名(包含时间戳)timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")filename = f'空目录统计_{timestamp}.xlsx'# 保存文件wb.save(filename)return filenamedef main():# 读取a.xlsx中的路径with open('a.xlsx', 'r', encoding='utf-8') as f:paths = f.readlines()# 获取空目录empty_dirs = get_empty_dirs(paths)# 保存到Exceloutput_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脚本生成统计文件。pauseexit /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>nulif !errorlevel!==0 (echo 已删除: %%a) else (echo 删除失败: %%a))echo.echo 删除操作完成!
) else (echo.echo 操作已取消。
):: 清理临时文件
del "%TEMP_FILE%" 2>nulpause 

完美解决我的问题!!!

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


http://www.ppmy.cn/embedded/149420.html

相关文章

小米加速AI布局,搭建GPU万卡集群,近屿智能带您走近AI大模型

小米公司近期宣布正在加速构建GPU万卡集群,这一举措标志着小米在AI大模型领域的战略升级。据内部人士透露,该计划已在雷军的领导下秘密推进数月。雷军指出,在AI硬件的发展中,手机才是核心,小米在这一领域的全面投入是战…

Git在软件开发中的核心作用:如何利用Git进行版本控制和团队协作?

在当今数字化时代,软件开发项目日益复杂,团队协作的紧密程度和效率对于项目的成功交付起着至关重要的作用。而Git,作为一款强大的分布式版本控制系统,已经成为软件开发领域不可或缺的工具。它不仅能够帮助开发者高效地管理代码版本…

【软件工程】十万字知识点梳理 | 期末复习专用

原创文章,禁止转载。 文章目录 图CRC卡片用例图类图状态图活动图泳道图软件质量因素自顶向下集成自底向上集成人员与工作量之间的关系时序图关键路径软件结构基本路径测试判定表数据流图(DFD)体系结构设计问题数据字典挣值分析等价划分程序流程图PAD | N-S燃尽图甘特图对象模…

MySQL Workbench菜单汉化为中文

默认情况下,安装完成的MySQL Workbench的菜单为英文,今天介绍一个简单易操作的方法,将MySQL Workbench菜单汉化为中文。 一、查找MySQL Workbench菜单标记文件main_menu.xml 1. 默认情况下,MySQL Workbench的安装路径为&#xff…

VSCode使用deepseek-v3

2024年12月27日,deekseep-v3发布了。顶级benchmark和实用体验,显著降低的训练成本,注册后免费送token额度。很诱人。 生成 deepseek-v3 API https://www.deepseek.com/ https://platform.deepseek.com/usage 创建一个新的 api key VSCo…

智能家居常用的无线通信协议及其特点

以下是智能家居常用的无线通信协议及其特点对比表: 无线协议主要特点优点缺点典型应用场景Wi-Fi使用无线局域网 (2.4GHz/5GHz),速度快,传输距离较远- 传输速率高- 网络覆盖广- 可直接与互联网连接- 功耗较高- 网络拥堵可能性大- 需要路由器支…

Centos7中使用yum命令时候报错 “Could not resolve host: mirrorlist.centos.org; 未知的错误“

2024.06.30之后,在Centos 7 中使用 yum 命令报错,如下: 已加载插件:fastestmirror Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infras…

dubbo 初体验

dubbo 初体验 dubbo 是阿里开源的一个 RPC 框架,之后捐献给 Apache 开源基金会,并且成为 apache 基金会的顶级项目(dubbo apache 官网),如今社区依旧十分的活跃,得益于他的高性能的传输效率,优秀的设计,以及业内人士的维护如今在各大公司被使用(阿里,jd,饿了吗) …