欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > python实战案例笔记:统计出数据中路劲下没有文件的文件夹

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

2025/6/22 22:35:52 来源:https://blog.csdn.net/weixin_47139678/article/details/144778794  浏览:    关键词:python实战案例笔记:统计出数据中路劲下没有文件的文件夹

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

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

在这里插入图片描述

详细实现代码:

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 

完美解决我的问题!!!

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词