欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)文件夾中文件名對比

 更新時間:2025年07月08日 09:48:08   作者:MartinYangHJ  
這篇文章主要為大家詳細(xì)介紹了如何使用Python實現(xiàn)文件夾中文件名與Excel中存在的文件名進(jìn)行對比,并進(jìn)行刪除操作,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

以下python程序版本為Python3.13.0

1.請寫一個python程序,實現(xiàn)以下邏輯:從文件夾獲取所有文件名,與Excel中的fileName列進(jìn)行對比,凡是不在該文件夾下的文件名,從Excel文檔中刪除后,并將Excel中fileName和fileLength數(shù)據(jù)保存至新的excel文檔

import os
import pandas as pd
 
def filter_excel_by_folder(folder_path, excel_path, output_path=None, sheet_name=0, column_name='fileName'):
    """
    過濾Excel文件,僅保留文件夾中存在的文件名對應(yīng)的行
    參數(shù):
    folder_path (str): 要檢查的文件夾路徑
    excel_path (str): 需要過濾的Excel文件路徑
    output_path (str, 可選): 輸出Excel文件路徑,默認(rèn)為None(覆蓋原文件)
    sheet_name (str/int, 可選): 工作表名稱或索引,默認(rèn)為第一個工作表
    column_name (str, 可選): 包含文件名的列名,默認(rèn)為'fileName'
    """
    try:
        # 獲取文件夾中的所有文件名(包括擴(kuò)展名)
        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} 行數(shù)據(jù)")
 
        # 檢查文件名列是否存在
        if column_name not in df.columns:
            raise ValueError(f"Excel中找不到列 '{column_name}'")
 
        # 過濾數(shù)據(jù):僅保留文件夾中存在的文件名
        filtered_df = df[df[column_name].isin(folder_files)]
        new_count = len(filtered_df)
        removed_count = original_count - new_count
 
        columns_to_save = ['fileName', 'fileLength']
 
        # 保存需要的列
        df_result = filtered_df[columns_to_save]
 
        print(f"刪除了 {removed_count} 行不存在于文件夾中的數(shù)據(jù)")
        print(f"保留 {new_count} 行數(shù)據(jù)")
 
        # 保存結(jié)果
        if output_path is None:
            output_path = excel_path  # 覆蓋原文件
            print("將覆蓋原始Excel文件")
        else:
            print(f"將保存到新文件: {output_path}")
 
        # 保存到Excel
        df_result.to_excel(output_path, index=False)
        print("操作完成!")
 
        return removed_count
 
    except Exception as e:
        print(f"發(fā)生錯誤: {str(e)}")
        return -1

 2.請寫一個python程序,實現(xiàn)以下邏輯:從文件夾獲取所有文件名,與Excel中的fileName列進(jìn)行對比,凡是不在該Excel的文件名,將其從文件夾中刪除

import os
import pandas as pd
 
 
def delete_unmatched_files(excel_path='', folder_path='', sheet_name=2, column_name='path'):
    """
    根據(jù)Excel中的文件名刪除文件夾中不匹配的文件
    參數(shù):
        excel_path (str): Excel文件路徑
        folder_path (str): 要清理的文件夾路徑
        sheet_name (str/int): Excel工作表名或索引,默認(rèn)為第一個工作表
        column_name (str): 包含文件名的列名,默認(rèn)為'文件名'
    """
    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_files
 
        if not files_to_delete:
            print("沒有需要刪除的文件")
            return
 
        print(f"找到 {len(files_to_delete)} 個需要刪除的文件")
 
        # 刪除文件
        deleted_count = 0
        for 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 += 1
            except Exception as e:
                print(f"刪除 {file} 時出錯: {str(e)}")
 
        print(f"刪除完成,共刪除了 {deleted_count} 個文件")
 
    except Exception as e:
        print(f"程序出錯: {str(e)}")

知識擴(kuò)展

Python 獲取當(dāng)前文件夾所有文件名并寫入到excel文件中

在工作中,有時候,我們需要整理文件夾中的所有文件名稱,并羅列在一張表格中。天哪,我的文件夾中有上千個文件,要一個個的復(fù)制粘貼嗎?太麻煩了吧?今天,我們用Python來解決這個問題。

1. 使用方法:

將下面這段Python代碼文件復(fù)制到需要整理文件名的文件夾下,然后運(yùn)行下代碼,最后在刪除這段代碼的文件名就可以了(將代碼放到文件下主要是不用輸入文件夾目錄路徑,但代碼的文件名也會被抓取)。

# coding=utf-8
import os
import xlwt #操作excel模塊
import sys
 
file_path = sys.path[0]+'\\filenamelist.xls'#sys.path[0]為要獲取當(dāng)前路徑,filenamelist為要寫入的文件
f = xlwt.Workbook(encoding='utf-8', style_compression=0) #新建一個excel
sheet = f.add_sheet('sheet1') #新建一個sheet
pathDir = os.listdir(sys.path[0])#文件放置在當(dāng)前文件夾中,用來獲取當(dāng)前文件夾內(nèi)所有文件目錄
 
i = 0 #將文件列表寫入test.xls
for s in pathDir:
    sheet.write(i, 0, s) #參數(shù)i,0,s分別代表行,列,寫入值
    i = i+1
            
print(file_path)
print(i)        #顯示文件名數(shù)量
f.save(file_path)

實現(xiàn)效果

當(dāng)前文件夾下面文件列表如下圖,現(xiàn)在要獲取所有文件名列表并寫入到filenamelist.xls文件中。

到此這篇關(guān)于Python實現(xiàn)文件夾中文件名對比的文章就介紹到這了,更多相關(guān)Python文件名對比內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論