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

Python基于文件內容實現(xiàn)查找文件功能

 更新時間:2022年05月07日 09:38:23   作者:渴望力量的哈士奇  
無論是Linux系統(tǒng)還是Windows系統(tǒng)都有基于文件名實現(xiàn)過濾、查找的功能。但是如果想要查找一些關于某些文件指定內容的文件,好像它們明面上沒有這樣的功能了。這個時候就可以通過 Python 來實現(xiàn)這樣的功能,快跟隨小編一起學習一下吧

該章節(jié)將學習關于文件查找的操作,大家都知道,無論是 Linux 系統(tǒng)還是 Windows 系統(tǒng)都有基于文件名實現(xiàn)過濾、查找的功能。但是如果想要查找一些關于某些文件指定內容的文件,好像無論是 Linux 還是 Windows 明面上沒有這樣的功能了。這個時候就可以通過 Python 來實現(xiàn)這樣的功能,通過該章節(jié)的學習,就可以學習到該功能的如何利用 Python 實現(xiàn)這樣的操作。

文件查找操作

glob 的介紹

glob 包是一個快速查找文件夾中內容的包,可以通過模糊查找的形式找到我們想要的內容。

glob 的基本使用

導入包與模塊

from glob import glob

使用方法

glob(任意目錄)

返回內容:

指定路徑下的內容列表,不存在的路徑返回空列表。

代碼示例如下:

# coding:utf-8

import os
from glob import glob

target = os.getcwd()

result = glob(target)
print(result)                   # 打印輸出當前路徑的文件夾

result = glob(target + '/*')
print(result)                   # 打印輸出當前路徑的文件夾下的所有文件

result = glob(target + '/*.py')
print(result)                   # 打印輸出當前路徑的文件夾下的所有以 "py" 結尾的文件

result = glob(target + '/*.zip')
print(result)                   # 打印輸出當前路徑的文件夾下的所有以 "zip" 結尾的文件

result = glob(target + '/filetest*')
print(result)                   # # 打印輸出當前路徑的文件夾下的所有以 "filetest" 開頭的文件

運行結果如下:

查找指定的文件

已知條件:

想查找的文件名已經知道,但是目錄在哪里并不知道。

實現(xiàn)方法:

利用 "glob" 從最上級目錄開始查找,利用遞歸模式,不斷的查找,直到找到為止。

代碼示例如下:

# coding:utf-8

import glob

"""
獲取當前路徑下所有內容
判斷每個內容的類型(文件夾還是文件)
若是文件夾則繼續(xù)遞歸查找
"""

path = glob.os.path.join(glob.os.getcwd(), '*')     # 獲取當前文件夾下的所有內容
                                                    # glob 模塊其實已經包含了 "os" 模塊
final_result = []       # 定義一個空列表,用以存儲 search() 函數查到的內容

def search(path, target):       # 定義 search() 函數,傳入 "path" 文件路徑, "target" 要查找的目標文件
    result = glob.glob(path)

    for data in result:         # for 循環(huán)判斷遞歸查到的內容是文件夾還是文件
        if glob.os.path.isdir(data):    # 若是文件夾,繼續(xù)將該文件夾的路徑傳給 search() 函數繼續(xù)遞歸查找
            _path = glob.os.path.join(data, '*')
            search(_path, target)
        else:                           # 若是文件,則將該查詢到的文件所在路徑插入 final_result 空列表
            if target in data:
                final_result.append(data)
    return final_result


if __name__ == '__main__':
    result = search(path, target='filetest.py')
    print(result)

運行結果如下:

基于文件內容查找文件

接下來我們看一下查找指定內容的文件:

已知條件:

文件中包含有某些關鍵字,但是不知道文件名和文件所在路徑

實現(xiàn)方法:

利用 "glob" 從最上級目錄開始查找,利用遞歸模式,不斷的查找。如果是文件夾則進入繼續(xù)查找,是文件則讀取,判斷是否包含該內容,返回該內容的文件名以及所在路徑。

其實,基于文件內容查找文件實現(xiàn)的方式大體與上文的查找指定文件大體相似,只不過加入了讀取文件的判斷罷了。

代碼示例如下:

# coding:utf-8

import glob

"""
獲取當前路徑下所有內容
判斷每個內容的類型(文件夾還是文件)
若是文件夾則繼續(xù)遞歸查找
"""

path = glob.os.path.join(glob.os.getcwd(), '*test04')     # 因為下文捕獲不可讀文件格式太多,所以這里直接指定了 "test04" 路徑
final_result = []       # 定義一個空列表,用以存儲 search() 函數查到的內容



def search(path, target):       # 定義 search() 函數,傳入 "path" 文件路徑, "target" 要查找的目標文件
    result = glob.glob(path)

    for data in result:         # for 循環(huán)判斷遞歸查到的內容是文件夾還是文件
        if glob.os.path.isdir(data):    # 若是文件夾,繼續(xù)將該文件夾的路徑傳給 search() 函數繼續(xù)遞歸查找
            _path = glob.os.path.join(data, '*')
            search(_path, target)
        else:                           # 若是文件,則將該查詢到的文件所在路徑插入 final_result 空列表
            f = open(data, 'r')         # 利用 open() 函數讀取文件,并通過 try...except... 捕獲不可讀的文件格式(.zip 格式)
            try:
                content = f.read()
                if target in content:
                    final_result.append(data)
            except:
                print('這是不可讀文件格式的文件的所在路徑:{} '.format(data))
                continue
            finally:
                f.close()
    return final_result


if __name__ == '__main__':
    result = search(path, target='測試文件')
    print(result)

運行結果如下:

到此這篇關于Python基于文件內容實現(xiàn)查找文件功能的文章就介紹到這了,更多相關Python文件查找內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決pycharm最左側Tool Buttons顯示不全的問題

    解決pycharm最左側Tool Buttons顯示不全的問題

    今天小編就為大家分享一篇解決pycharm最左側Tool Buttons顯示不全的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬蟲爬取博客實現(xiàn)可視化過程解析

    Python爬蟲爬取博客實現(xiàn)可視化過程解析

    這篇文章主要介紹了Python爬蟲爬取博客實現(xiàn)可視化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • python基礎 range的用法解析

    python基礎 range的用法解析

    這篇文章主要介紹了python基礎 range的用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python實現(xiàn)矩陣轉置的方法分析

    Python實現(xiàn)矩陣轉置的方法分析

    這篇文章主要介紹了Python實現(xiàn)矩陣轉置的方法,結合實例形式較為詳細的分析了Python實現(xiàn)矩陣轉置的相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • Django 實現(xiàn)圖片上傳和下載功能

    Django 實現(xiàn)圖片上傳和下載功能

    這篇文章主要介紹了Django 如何實現(xiàn)圖片上傳和下載功能,幫助大家更好的理解和使用django框架,感興趣的朋友可以了解下
    2020-12-12
  • Python實戰(zhàn)小游戲飛機大戰(zhàn)詳解

    Python實戰(zhàn)小游戲飛機大戰(zhàn)詳解

    飛機大戰(zhàn)想必是很多人童年時期的經典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關于如何利用python寫一個簡單的飛機大戰(zhàn)小游戲的相關資料,需要的朋友可以參考下
    2021-11-11
  • Python中celery的使用

    Python中celery的使用

    Celery是一個簡單、靈活且可靠的,處理大量消息的分布式系統(tǒng),專注于實時處理的異步任務隊列,同時也支持任務調度。接下來通過本文給大家介紹Python中celery的使用詳解,感興趣的朋友一起看看吧
    2021-08-08
  • Anaconda 離線安裝 python 包的操作方法

    Anaconda 離線安裝 python 包的操作方法

    今天小編就為大家分享一篇Anaconda 離線安裝 python 包的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python數學建模之Numpy?應用介紹與Pandas學習

    python數學建模之Numpy?應用介紹與Pandas學習

    這篇文章主要介紹了python數學建模之Numpy?應用介紹與Pandas學習,NumPy?是一個運行速度非??斓臄祵W庫,一個開源的的python科學計算庫,主要用于數組、矩陣計算
    2022-07-07
  • Python并發(fā)編程隊列與多線程最快發(fā)送http請求方式

    Python并發(fā)編程隊列與多線程最快發(fā)送http請求方式

    假如有一個文件,里面有10萬個url,需要對每個url發(fā)送http請求,并打印請求結果的狀態(tài)碼,如何編寫代碼盡可能快的完成這些任務呢
    2021-09-09

最新評論