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 

完美解决我的问题!!!

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

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

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

相关文章

docker使用国内镜像

可用地址 https://docker.m.daocloud.io https://docker.rainbond.cc https://docker.1ms.run方法1:配置(需要重启docker) sudo vim /etc/docker/daemon.json # 在registry-mirrors中添加地址(没有的就直接创建了) #比如 {"registry-mirrors": ["https://dock…

机械臂的各种标定

文章目录 1. 工具坐标系标定2. 工具手标定3. 手眼标定联系 在工程中,同时使用工具坐标系标定、工具手标定和手眼标定的概念、目的和作用如下: 1. 工具坐标系标定 概念: 工具坐标系标定是指确定工具相对于机器人坐标系的位置和姿态关系的过程…

Oracle Managed Files(OMF)

Oracle Managed Files 是指: 在创建表空间文件等文件时,可以不必指定文件路径,由Oracle自动在某个目录下创建,文件名也是Oracle自动命名。 那这个OMF怎么使能呢? 其实是靠设置一些参数,指定要存储的目录…

GXUOJ-算法-第一次作业(整数划分、汉诺塔、排列问题、数塔问题)

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…

新服务器ubuntu系统相关操作

1、查看驱动:驱动版本535.216.01能够支持cuda12.2,下面直接使用默认安装的cuda。 2、赋予用户管理员权限。 首先有超级用户(root)权限来编辑 /etc/sudoers 文件,visudo 是一个命令,用于安全地编辑 /etc/sudoers 文件。运行: sudo visudo 在 visudo 编辑器中,找到类似…

【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别

su 命令 su (Switch User 切换用户)&#xff0c;允许用户切换到另一个用户的身份&#xff0c;默认情况下是切换到 root 用户。 默认行为&#xff1a;如果只运行 su&#xff0c;则系统会要求输入 root 用户的密码来切换到 root 用户&#xff0c;获取管理员权限。 切换到其他用…

docker-开源nocodb,使用已有数据库

使用已有数据库 创建本地数据库 数据库&#xff1a;nocodb 用户&#xff1a;nocodb 密码&#xff1a;xxxxxx修改docker-compose.yml 默认网关的 IP 地址是 172.17.0.1&#xff08;适用于 bridge 网络模式&#xff09;version: "2.1" services:nocodb:environment:…

near-synonym反义词生成(2):Prompt +Bert-MLM(FT)

near-synonym之反义词生成方法二 near-synonym, 中文反义词/近义词/同义词(antonym/synonym)工具包. 方法一为(neg_antonym): Word2vec -> ANN -> NLI -> Length 方法二为(mlm_antonym): Prompt Bert-MLM(FT) Beam-Search 项目地址 github: https://github.com/yon…

基于16QAM的载波同步和定时同步性能仿真,采用四倍采样,包括Costas环和gardner环

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 载波同步是…

用ttf文件解决python画图乱码和中文方框问题

#将字体放到某个路径下&#xff0c;下载的字体simsun支持中文 font FontProperties(fname“/usr/share/fonts/chinese/simsun.ttc”,size15) 我的字体文件在 “D:\中文字体TTF源文件\中文字体TTF源文件\simhei.ttf” 帮我解决乱码问题 import os import pandas as pd import…

谷云科技数据集成社区焕新登场:功能、资源、会员权益全面升级

12月26日&#xff0c;谷云科技ETLCloud技术社区迎来全新升级。升级后社区的内容更加丰富&#xff0c;满足社区用户更多需要。 功能更细致&#xff0c;查找更方便 社 区 问 答 | 博 客 文 章 | 文 档 中 心 作为社区内容贡献的核心板块&#xff0c;我们对社区问答、博客…

MySql详细教程-从入门到进阶(超实用)

基础篇 通用语法及分类 DDL: 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库、表、字段&#xff09;DML: 数据操作语言&#xff0c;用来对数据库表中的数据进行增删改DQL: 数据查询语言&#xff0c;用来查询数据库中表的记录DCL: 数据控制语言&#xff0c;用…

20241225在ubuntu20.04.5下监控SSD

20241225在ubuntu20.04.5下监控SSD 2024/12/25 20:29 参考资料&#xff1a; 百度&#xff1a;ubuntu查看ssd寿命 方法 1&#xff1a;使用「磁盘」工具监测 SSD 健康状态 sudo apt install gnome-disk-utility 方法 2&#xff1a;使用 smartctl 工具检查 SSD 健康状态 Ubuntu 和…

node.js之---单线程异步非阻塞 I/O

单线程模型 1、Node.js 使用 单线程 来处理客户端请求和执行任务 2、如果遇到异步任务&#xff0c;node.js使用事件循环和异步 I/O 模型&#xff0c;使得它能够高效地处理大量并发请求 异步操作有哪些 1、读取文件 2、网络请求 3、数据库操作等等 异步非阻塞 I/O Node.…

基于PLC的电梯控制系统(论文+源码)

1.系统设计 电梯采用了PLC控制方式&#xff0c;通过对PLC进行逻辑程序设计&#xff0c;电梯不仅在控制水平上得到了质的提升&#xff0c;同时在安全性上也得到了大大提高。控制系统在构造上实现了简洁化&#xff0c;不仅优化了硬件接线方便了线路施工&#xff0c;同时对控制要…

【AR的手势识别算法有哪些】

在增强现实&#xff08;AR&#xff09;应用中&#xff0c;手势识别是实现用户与虚拟环境互动的关键技术之一。手势识别算法通过捕捉并分析用户的手势&#xff0c;转化为具体的控制命令&#xff0c;从而实现对虚拟物体、机器设备等的操作。以下是常见的AR手势识别算法及其实现方…

C++ hashtable

文章目录 1. 基本概念2. 哈希函数3. 哈希冲突及解决方法开放定址法链地址法再哈希法建立公共溢出区4. 哈希表的操作实现5. 内存管理及优化 时间复杂度理想情况&#xff08;无哈希冲突或冲突极少&#xff09;一般情况&#xff08;考虑哈希冲突及解决方法&#xff09;综合来看 以…

深度学习使用Anaconda打开Jupyter Notebook编码

新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包&#xff0c;但是很慢&#xff0c;不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本&#xff0c;支持windows&#xff0c;linux系统 下载完之后自行…

GDPU Vue前端框架开发 跨年大礼包

记住&#xff0c;年底陪你跨年的不会仅是方便面跟你的闺蜜&#xff0c;还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是&#xff08;&#xff09;。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根实例对象的元素是&#xff08;&…

vue 中 ref 详解

一、定义与基本用法 1. 定义 在 Vue.js 中&#xff0c;ref是一个用于在组件中获取 DOM 元素或者子组件实例引用的属性。它提供了一种直接访问元素或组件的方式&#xff0c;使得我们可以在 JavaScript 代码中对它们进行操作。 2. 基本使用 在模板中&#xff0c;可以通过给元…