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

Python實(shí)現(xiàn)任意文件查找工具的不同方法詳解

 更新時(shí)間:2025年03月07日 09:37:38   作者:Bruce_xiaowei  
在日常的開(kāi)發(fā)和運(yùn)維工作中,經(jīng)常需要查找特定類型的文件或帶有特定模式的文件,本文將提供兩種不同的編寫(xiě)文件查找工具實(shí)現(xiàn)方式,需要的可以參考下

摘要

在日常的開(kāi)發(fā)和運(yùn)維工作中,經(jīng)常需要查找特定類型的文件或帶有特定模式的文件。使用命令行工具如find、grep等可以滿足需求,但有時(shí)我們希望用編程語(yǔ)言來(lái)實(shí)現(xiàn)更加靈活和可定制化的解決方案。本文將介紹如何使用Python編寫(xiě)一個(gè)簡(jiǎn)單的文件查找工具,支持通配符匹配,并且可以在指定目錄下遞歸查找文件。我們將提供兩種不同的實(shí)現(xiàn)方式:一種基于os.walk()和fnmatch,另一種基于glob模塊。

環(huán)境準(zhǔn)備

確保你已經(jīng)安裝了Python 3.x版本。如果你還沒(méi)有安裝,請(qǐng)?jiān)L問(wèn)Python官網(wǎng)下載并安裝最新穩(wěn)定版。

實(shí)現(xiàn)方式一:使用os.walk()和fnmatch

實(shí)現(xiàn)思路

導(dǎo)入必要的庫(kù):我們將使用os模塊來(lái)遍歷目錄結(jié)構(gòu),使用fnmatch模塊來(lái)進(jìn)行通配符匹配。

定義函數(shù):創(chuàng)建一個(gè)名為find_files_with_os_walk的函數(shù),該函數(shù)接收兩個(gè)參數(shù):一個(gè)是目標(biāo)目錄路徑,另一個(gè)是包含通配符的文件名模式。

遞歸遍歷目錄:通過(guò)os.walk()方法遍歷給定目錄及其子目錄。

匹配文件名:對(duì)于每個(gè)文件,使用fnmatch.fnmatch()檢查其名稱是否符合提供的模式。

返回結(jié)果:將所有符合條件的文件路徑存儲(chǔ)在一個(gè)列表中,并最終返回該列表。

代碼實(shí)現(xiàn)

import os
import fnmatch

def find_files_with_os_walk(directory, pattern):
    """
    在指定目錄及其子目錄中查找符合給定模式的文件。
    
    參數(shù):
        directory (str): 要搜索的根目錄路徑。
        pattern (str): 文件名模式,支持通配符 * 和 ?。
        
    返回:
        list: 符合條件的文件路徑列表。
    """
    matched_files = []
    
    # 遍歷目錄樹(shù)
    for root, dirs, files in os.walk(directory):
        for basename in files:
            if fnmatch.fnmatch(basename, pattern):
                filename = os.path.join(root, basename)
                matched_files.append(filename)
                
    return matched_files

# 示例用法
if __name__ == "__main__":
    import sys
    
    if len(sys.argv) != 3:
        print("Usage: python find_files.py <directory> <pattern>")
        sys.exit(1)
    
    directory = sys.argv[1]
    pattern = sys.argv[2]
    
    results = find_files_with_os_walk(directory, pattern)
    for result in results:
        print(f'查找的文件名:{result.split(os.sep)[-1]}', f'完整路徑:{result}')

實(shí)現(xiàn)方式二:使用glob模塊

實(shí)現(xiàn)思路

導(dǎo)入必要的庫(kù):我們將使用glob模塊,它可以直接處理通配符模式,簡(jiǎn)化了文件查找過(guò)程。

定義函數(shù):創(chuàng)建一個(gè)名為find_files_with_glob的函數(shù),該函數(shù)接收兩個(gè)參數(shù):一個(gè)是目標(biāo)目錄路徑,另一個(gè)是包含通配符的文件名模式。

生成文件路徑:通過(guò)glob.glob()方法生成符合條件的文件路徑列表。

返回結(jié)果:直接返回生成的文件路徑列表。

代碼實(shí)現(xiàn)

import glob
import os


def find_files_with_glob(directory, pattern):
    """
    在指定目錄及其子目錄中查找符合給定模式的文件。

    參數(shù):
        directory (str): 要搜索的根目錄路徑。
        pattern (str): 文件名模式,支持通配符 * 和 ?。

    返回:
        list: 符合條件的文件路徑列表。
    """
    # 將目錄路徑與模式組合成完整的路徑模式
    full_pattern = os.path.join(directory, "**", pattern)

    # 使用glob模塊進(jìn)行查找
    matched_files = glob.glob(full_pattern, recursive=True)

    return matched_files


# 示例用法
if __name__ == "__main__":
    import sys

    if len(sys.argv) != 3:
        print("Usage: python find_files.py <directory> <pattern>")
        sys.exit(1)

    directory = sys.argv[1]
    pattern = sys.argv[2]

    results = find_files_with_glob(directory, pattern)
    for result in results:
        print(f'查找的文件名:{result.split(os.sep)[-1]}', f'完整路徑:{result}')

使用說(shuō)明

保存上述代碼為find_files.py后,在命令行中運(yùn)行此腳本時(shí)需要提供兩個(gè)參數(shù):一個(gè)是想要搜索的目標(biāo)目錄路徑,另一個(gè)是要查找的文件名模式(例如*.txt)。例如:

$ python find_files.py /path/to/search "*.log"

這將在/path/to/search目錄及其所有子目錄中查找所有擴(kuò)展名為.log的文件,并打印出它們的完整路徑。

總結(jié)

通過(guò)這篇文章,我們學(xué)習(xí)了兩種使用Python內(nèi)置庫(kù)快速構(gòu)建帶通配符的文件查找工具的方法:

  • 使用os.walk()和fnmatch:適用于需要更細(xì)粒度控制的情況,如過(guò)濾文件類型、排除某些目錄等。
  • 使用glob模塊:簡(jiǎn)單直觀,適合大多數(shù)常規(guī)文件查找任務(wù)。

這兩種方法不僅簡(jiǎn)單易懂,而且非常靈活,可以根據(jù)實(shí)際需求進(jìn)一步擴(kuò)展功能,比如添加多線程支持以提高效率,或者集成到更大的應(yīng)用程序中作為一部分功能。

到此這篇關(guān)于Python實(shí)現(xiàn)任意文件查找工具的不同方法詳解的文章就介紹到這了,更多相關(guān)Python文件查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python繪制全球疫情變化地圖的實(shí)例代碼

    Python繪制全球疫情變化地圖的實(shí)例代碼

    這篇文章主要介紹了使用Python繪制全球疫情變化地圖的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python調(diào)用win32接口進(jìn)行截圖的示例

    python調(diào)用win32接口進(jìn)行截圖的示例

    這篇文章主要介紹了python調(diào)用win32接口進(jìn)行截圖的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Python基于最小二乘法實(shí)現(xiàn)曲線擬合示例

    Python基于最小二乘法實(shí)現(xiàn)曲線擬合示例

    這篇文章主要介紹了Python基于最小二乘法實(shí)現(xiàn)曲線擬合,涉及Python基于numpy及scipy庫(kù)進(jìn)行曲線擬合操作相關(guān)運(yùn)算技巧,需要的朋友可以參考下
    2018-06-06
  • 用Python解數(shù)獨(dú)的方法示例

    用Python解數(shù)獨(dú)的方法示例

    這篇文章主要介紹了用Python解數(shù)獨(dú)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python實(shí)現(xiàn)全自動(dòng)安裝第三方庫(kù)的方法

    Python實(shí)現(xiàn)全自動(dòng)安裝第三方庫(kù)的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)全自動(dòng)安裝第三方庫(kù)的方法,一說(shuō)Python要安裝哪個(gè)模塊,我們第一反應(yīng),win+r輸入cmd,pip?instll安裝,但是如果換電腦了,Python第三方庫(kù)那么多,難道要一次一次的敲擊pip?install,本文就介紹一個(gè)簡(jiǎn)單的方法解放雙手,需要的朋友可以參考下
    2023-07-07
  • 使用Flask集成bootstrap的方法

    使用Flask集成bootstrap的方法

    這篇文章主要介紹了使用Flask集成bootstrap的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控

    Python使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控

    psutil庫(kù)可以實(shí)時(shí)獲取系統(tǒng)的一些信息,這樣就可以達(dá)到實(shí)時(shí)監(jiān)控系統(tǒng)的目的。本文對(duì)詳細(xì)講解了ython使用psutil對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控,感興趣的朋友可以看一看
    2021-08-08
  • Win10環(huán)境python3.7安裝dlib模塊趟過(guò)的坑

    Win10環(huán)境python3.7安裝dlib模塊趟過(guò)的坑

    這篇文章主要介紹了Win10環(huán)境python3.7安裝dlib模塊趟過(guò)的坑,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python類的用法實(shí)例淺析

    Python類的用法實(shí)例淺析

    這篇文章主要介紹了Python類的用法,以實(shí)例形式簡(jiǎn)單分析了Python中類的定義、構(gòu)造函數(shù)及使用技巧,需要的朋友可以參考下
    2015-05-05
  • Python爬蟲(chóng)進(jìn)階之Beautiful Soup庫(kù)詳解

    Python爬蟲(chóng)進(jìn)階之Beautiful Soup庫(kù)詳解

    這篇文章主要介紹了Python爬蟲(chóng)進(jìn)階之Beautiful Soup庫(kù)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲(chóng)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評(píng)論