当前位置: 首页 > news >正文

Python实现文件夹中文件名与Excel中存在的文件名进行对比,并进行删除操作

以下python程序版本为Python3.13.0

1.请写一个python程序,实现以下逻辑:从文件夹获取所有文件名,与Excel中的fileName列进行对比,凡是不在该文件夹下的文件名,从Excel文档中删除后,并将Excel中fileName和fileLength数据保存至新的excel文档

import os
import pandas as pddef filter_excel_by_folder(folder_path, excel_path, output_path=None, sheet_name=0, column_name='fileName'):"""过滤Excel文件,仅保留文件夹中存在的文件名对应的行参数:folder_path (str): 要检查的文件夹路径excel_path (str): 需要过滤的Excel文件路径output_path (str, 可选): 输出Excel文件路径,默认为None(覆盖原文件)sheet_name (str/int, 可选): 工作表名称或索引,默认为第一个工作表column_name (str, 可选): 包含文件名的列名,默认为'fileName'"""try:# 获取文件夹中的所有文件名(包括扩展名)folder_files = set(os.listdir(folder_path))print(f"在文件夹中找到 {len(folder_files)} 个文件")# 读取Excel文件df = pd.read_excel(excel_path, sheet_name=sheet_name)original_count = len(df)print(f"Excel中原有 {original_count} 行数据")# 检查文件名列是否存在if column_name not in df.columns:raise ValueError(f"Excel中找不到列 '{column_name}'")# 过滤数据:仅保留文件夹中存在的文件名filtered_df = df[df[column_name].isin(folder_files)]new_count = len(filtered_df)removed_count = original_count - new_countcolumns_to_save = ['fileName', 'fileLength']# 保存需要的列df_result = filtered_df[columns_to_save]print(f"删除了 {removed_count} 行不存在于文件夹中的数据")print(f"保留 {new_count} 行数据")# 保存结果if output_path is None:output_path = excel_path  # 覆盖原文件print("将覆盖原始Excel文件")else:print(f"将保存到新文件: {output_path}")# 保存到Exceldf_result.to_excel(output_path, index=False)print("操作完成!")return removed_countexcept Exception as e:print(f"发生错误: {str(e)}")return -1

 2.请写一个python程序,实现以下逻辑:从文件夹获取所有文件名,与Excel中的fileName列进行对比,凡是不在该Excel的文件名,将其从文件夹中删除

import os
import pandas as pddef delete_unmatched_files(excel_path='', folder_path='', sheet_name=2, column_name='path'):"""根据Excel中的文件名删除文件夹中不匹配的文件参数:excel_path (str): Excel文件路径folder_path (str): 要清理的文件夹路径sheet_name (str/int): Excel工作表名或索引,默认为第一个工作表column_name (str): 包含文件名的列名,默认为'文件名'"""try:# 从Excel读取文件名列表df = pd.read_excel(excel_path, sheet_name=sheet_name)excel_files = set(df[column_name].dropna().astype(str).tolist())print(f"Excel中找到 {len(excel_files)} 个文件名")# 获取文件夹中的所有文件folder_files = set(os.listdir(folder_path))print(f"文件夹中找到 {len(folder_files)} 个文件")# 找出需要删除的文件(在文件夹中但不在Excel中的文件)files_to_delete = folder_files - excel_filesif not files_to_delete:print("没有需要删除的文件")returnprint(f"找到 {len(files_to_delete)} 个需要删除的文件")# 删除文件deleted_count = 0for file in files_to_delete:file_path = os.path.join(folder_path, file)try:if os.path.isfile(file_path):os.remove(file_path)print(f"已删除: {file}")deleted_count += 1except Exception as e:print(f"删除 {file} 时出错: {str(e)}")print(f"删除完成,共删除了 {deleted_count} 个文件")except Exception as e:print(f"程序出错: {str(e)}")

http://www.dtcms.com/a/268891.html

相关文章:

  • 护照阅读器在酒店应用场景
  • 【机器学习笔记 Ⅱ】8 多标签和多类别
  • 2. 你可以说一下 http 版本的发展过程吗
  • 【PTA数据结构 | C语言版】计算1~n与1~m每一项相互乘积的和
  • ArcGIS 水文分析升级:基于深度学习的流域洪水演进过程模拟
  • windows安装python环境以及对应编辑器的详细流程
  • 告别数据不一致!Spring Boot+Canal+RocketMQ实现精准的MySQL变更监听
  • 【flutter 在最新版本中已经弃用了传统的 apply from 方式引入 Gradle 插件】
  • 源哈希(sh)解析
  • 如果让计算机理解人类语言- One-hot 编码(One-hot Encoding,1950s)
  • Charles 中文版抓包工具详解:加速 API 调试与网络问题排查
  • tensorflow武林志第三卷第一章:天罗剑网
  • 【Java】switch,case,default,break用法
  • 在线学堂-4.媒资管理模块(三)
  • 技术面试题,HR面试题
  • LastActivityView -查看电脑上的所有操作记录
  • 基于MATLAB的图片和视频时间戳识别与可视化系统
  • 国际数字影像产业园:一站式服务,加速企业成长
  • 国产DSP,QXS320F280049,QXS320F28377D,QXS320F2800137,QXS320F28034
  • unity luban接入
  • Kotlin流操作符简介
  • uniapp三步完成生成一维码图片
  • 在linux 上使用tcpdump监听http 端口的报文并分析
  • 部署NextCloud AIO + Frp + nginx-proxy-manager内网穿透私有云服务
  • [免费]基于Python豆瓣电影数据分析及可视化系统(Flask+echarts+pandas)【论文+源码+SQL脚本】
  • WebView安全实现(一)
  • 「Windows/Mac OS」AIGC图片生成视频 ,webui + stable-diffusion环境部署教程
  • Linux系统从入门到精通!第四天(shell编程和Docker)
  • 雪豹速清:智能清理,释放手机空间
  • 操作系统级TCP性能优化:高并发场景下的内核参数调优实践