最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)行下代碼,最后在刪除這段代碼的文件名就可以了(將代碼放到文件下主要是不用輸入文件夾目錄路徑,但代碼的文件名也會被抓?。?/p>

# 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)文章

  • 基于Python實現(xiàn)船舶的MMSI的獲取(推薦)

    基于Python實現(xiàn)船舶的MMSI的獲取(推薦)

    工作中遇到一個需求,需要通過網(wǎng)站查詢船舶名稱得到MMSI碼,網(wǎng)站來自船訊網(wǎng)。這篇文章主要介紹了基于Python實現(xiàn)船舶的MMSI的獲取,需要的朋友可以參考下
    2019-10-10
  • python信號量,條件變量和事件詳解

    python信號量,條件變量和事件詳解

    這篇文章主要為大家介紹了python的信號量,條件變量和事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題

    python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題

    這篇文章主要介紹了python3.5+tesseract+adb實現(xiàn)西瓜視頻或頭腦王者輔助答題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python超詳細(xì)實現(xiàn)字體反爬流程

    python超詳細(xì)實現(xiàn)字體反爬流程

    大家好,本篇文章主要講的是python查策網(wǎng)字體反爬實例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-05-05
  • 解決Pycharm輸入法無法切換中英文問題

    解決Pycharm輸入法無法切換中英文問題

    這篇文章主要介紹了解決Pycharm輸入法無法切換中英文問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 利用python list完成最簡單的DB連接池方法

    利用python list完成最簡單的DB連接池方法

    這篇文章主要介紹了利用python list完成最簡單的DB連接池方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python中的匿名函數(shù)及編寫無參數(shù)decorator詳解

    python中的匿名函數(shù)及編寫無參數(shù)decorator詳解

    這篇文章主要介紹了python中的匿名函數(shù)及編寫無參數(shù)decorator詳解,高階函數(shù)可以接收函數(shù)做參數(shù),有些時候,我們不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便,需要的朋友可以參考下
    2023-12-12
  • Python中accelo包語法、參數(shù)和實際應(yīng)用案例總結(jié)

    Python中accelo包語法、參數(shù)和實際應(yīng)用案例總結(jié)

    Accelo是Python與專業(yè)服務(wù)自動化平臺交互的庫,支持API認(rèn)證、數(shù)據(jù)增刪改查及批量操作,這篇文章主要介紹了Python中accelo包語法、參數(shù)和實際應(yīng)用案例的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • Python集合的基礎(chǔ)操作

    Python集合的基礎(chǔ)操作

    這篇文章主要介紹了Python集合的基礎(chǔ)操作,Python中的集合和數(shù)學(xué)上的集合基本是沒有區(qū)別的,是無序的,即不可以使用索引訪問的,集合中是不能出現(xiàn)重復(fù)元素的。想著情了解具體內(nèi)容的小伙伴可以參考下面文章內(nèi)容
    2021-11-11
  • Django執(zhí)行python?manage.py?makemigrations報錯的解決方案分享

    Django執(zhí)行python?manage.py?makemigrations報錯的解決方案分享

    相信用過很多Django makemigrations的人都會遇到過makemigrations時會發(fā)生報錯,下面這篇文章主要給大家介紹了關(guān)于Django執(zhí)行python?manage.py?makemigrations報錯的解決方案,需要的朋友可以參考下
    2022-09-09

最新評論

繁峙县| 从江县| 自治县| 青川县| 大洼县| 松滋市| 安化县| 大渡口区| 兰坪| 侯马市| 农安县| 阿城市| 漯河市| 蚌埠市| 祁门县| 宜阳县| 连平县| 乌兰察布市| 清流县| 民县| 临高县| 阳春市| 克东县| 宁明县| 云阳县| 巴中市| 黑龙江省| 娱乐| 清涧县| 宜丰县| 新昌县| 霸州市| 南涧| 蕲春县| 连山| 新乡市| 瑞丽市| 瓦房店市| 新野县| 横山县| 山阴县|