glob - 被忽略的python超強文件批量處理模塊

2021-12-17 Python大數據分析
Python-glob模塊簡介glob模塊通配符

glob模塊是python自己帶的一個文件操作模塊,可以查找符合自己需求的的文件,並且支持通配符操作,主要包括以下三種匹配模式:

**匹配所有文件,包括目錄,子目錄和子目錄裡面的文件。

下面我們具體舉兩個例子說明一下:

樣例一:當前路徑文件下以 .py結尾的所有文件.

for fname in glob.glob("./*.py"):
    print(fname)

樣例二:當前路徑文件下以 .python開頭並且有一個字符的所有py文件.

for fname in glob.glob("./python?.py"):
    print(fname)

樣例三:當前路徑文件下以 .python開頭並且有一個數字的所有py文件.

for fname in glob.glob("./python[0-9].py"):
    print(fname)

glob()方法

glob模塊的主要方法是glob(),該方法返回的是所有匹配的文件路徑列表,該方法需要一個參數來指定一個路徑(可以是相對或絕對路徑),通常也可以和os.path.join() 方法一起使用。返回值當前路徑下的文件名,注意:不包括子文件夾裡的文件哦。示例如下:

import glob
 
# 絕對路徑:
glob.glob(r'c:\*.xlsx') #獲得C盤下的所有xlsx文件
glob.glob(r'E:\pic\*\*.png') # 獲得指定目錄下的所有png文件

# 相對路徑:
glob.glob(r'../*.R')
 
# 通配符操作
glob.glob('./[0-9].*')
# ['./1.gif', './2.txt','/4.py']
 
glob.glob('*.gif') #匹配所有gif文件
# ['1.gif', 'donghua.gif','Z.gif']

iglob()方法

iglob()方法不同於glob()方法,其返回的是一個迭代器(類似於yield),其結果是一個可遍歷的對象。與glob.glob()同時獲取所有的匹配路徑不同的是,glob.iglob()方法一次只獲取一個匹配路徑。(這個方法較少用到,這裡不再進行介紹)

Python-glob模塊實例應用

本節將舉一個具體的示例講解glob.glob()方法的應用,具體為 讀取多個CSV文件中的數據,並將所有數據合併到一個CSV文件 中,這裡我們還使用Pandas庫用於數據處理操作(這也是我日常數據處理中進場使用大方法哦)。其基本過程文字敘述如下:「將每個輸入文件中讀取到pandas數據框中,再將所有的數據框追加到一個數據框列表中,最後使用pandas.concat()函數將所有數據框連接成一個數據框」,其中concat()函數可以使用axis參數來設置連結數據框的方式,如下:

代碼表示如下:

import pandas as pd
import glob
import os
input_path = "" #數據所有文件所在路徑
out_file = "" # 輸出路徑
# 使用glob.glob()通配符找出所有以.csv結尾的文件
all_files = glob.glob(os.path.join(input_path,"*.csv"))all_data_
#數據框列表
all_data_frames = []
#循環操作文件
for file in all_files:
    data_frame = pd.read_csv(file,index_col=None)  
    all_data_frame.append(data_frame)
data_frame_concat = pd.concat(all_data_frames,axis=0,ignore_index=True)
data_frame_concat.to_csv(out_file,index=False)

經過以上代碼的運行,即可將所有具有相似數據形式的csv文件進行合併,大大提高數據處理效率。當然,以上代碼只是列舉了CSV文件,其實,對所有相同文件或具有特定字符串文件名的所有文件都可以通過glob.glob()方法進行批量處理,希望大家可以多使用該方法進行多個文件的批量操作。

總結

本期推文介紹了一個在日常工作中經常使用到的文件操作小技巧即:使用 glob.glob() 批量處理多個文件,進行自動化和規模化的數據處理操作,並具體舉出批量合併多個CSV文件的具體代碼實例幫助大家更好的理解操作,希望大家可以掌握這個Python內置的文件處理模塊glob。

如果大家覺得還不錯可以關注這位小夥伴的號,內容非常乾貨。

加入知識星球【我們談論數據科學】

400+小夥伴一起學習!

· 推薦閱讀 ·

純Python輕鬆開發實時可視化儀錶盤

送100本Python&數據書籍,看看都有哪些?

Python高性能空間數據計算包:PyGEOS


相關焦點

  • 數據處理技巧 | glob - 被忽略的超強文件批量處理模塊
    本篇推文開始,我將介紹一些常用的Python數據處理小技巧,幫助大家更好的處理數據,提高工作效率。今天我將介紹Python自帶的一個模塊-glob模塊。涉及的內容主要如下:Python-glob模塊簡介glob模塊通配符glob模塊是python自己帶的一個文件操作模塊,可以查找符合自己需求的的文件,並且支持通配符操作,主要包括以下三種匹配模式:**匹配所有文件,包括目錄,子目錄和子目錄裡面的文件。
  • 使用Python圖像處理庫Pillow處理圖像文件
    本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。使用PIL.Image模塊的open()函數打開磁碟圖像文件時,會根據文件內容自動確定文件格式。
  • 一文看懂Python對文件和文件夾的操作: 含os, shutil和glob模塊.Python學習面試必讀.
    在利用Python或Django從事Web開發時除了必須要了解Python面向對象的編程思想,還必須熟練掌握對文件夾和文件的操作。小編我精心準備了個小結,教你如何利用python進行基本的文件和文件夾操作,並重點介紹了如何使用os, shutil和glob模塊進行常見的文件和文件夾操作,如遍歷,刪除文件和查找文件。
  • 深度對比Python中4大文件處理庫(os、shutil、glob、pathlib)
    一、開篇os庫應該是使用頻率最高的一個文件處理庫,但是不得不說Python中還有幾個其它的文件處理庫,像shutil庫、glob庫、pathlib庫,它們可以說是相互補充,有著自己好用的方法。黃同學親切的將它們合稱為Python文件處理庫的四大天王。
  • 如何用Python批量處理Excel文件
    os 是 python 標準庫,即不需要安裝就可以使用,中文翻譯是接口的意思,格式是import os,內置了幾個函數,組合起來應用可以方便地與計算機進行交互,具體事例如下:以上面的為例子,假設同一個文件夾下存在A,B,C三個表                            我們要將以上三個表合併成一個表
  • Python文件路徑處理
    In [2]: directory = '/home/jeffery0207'In [3]: filename = 'a.txt'In [4]: directory + '/' + filenameOut[4]: '/home/jeffery0207/a.txt'In [5]: '/'.join([directory, filename
  • 技巧|深度對比Python中4大文件/文件夾處理庫
    一、開篇os庫應該是使用頻率最高的一個文件處理庫,但是不得不說Python中還有幾個其它的文件處理庫,像shutil庫、glob庫、pathlib庫,它們可以說是相互補充,有著自己好用的方法。區別這裡和os模塊中remove()、rmdir()的用法、remove()方法只能刪除某個文件,mdir()只能刪除某個空文件夾。但是shutil模塊中的rmtree()可以遞歸徹底刪除非空文件夾;3. glob庫glob庫,提供了更加便捷的用來查找符合特定規則的目錄和文件的方法,主要它支持*、**、? 、[ ]這四個通配符。
  • Python辦公自動化:OS模塊的常見用法
    :                 dir_list.append(file.name)         else:                 file_list.append(file.name)print("文件夾的總量是{},\n文件為別為{}".format(len(dir_list),dir_list))print('{}'.format('-
  • 文件操作So Easy!來,一起體驗下Python的Pathlib模塊~
    (os.path.expanduser('~'), 'realpython.txt'))在本教程中,你將了解如何使用pathlib模塊操作目錄和文件的名稱。使用pathlib模塊,可以使代碼使用更優雅,可讀和Pythonic代碼重寫上面的兩個示例,如:>>> path.parent>>> (pathlib.Path.home() / 'realpython.txt').is_file()Python文件路徑處理問題
  • 4招小技巧,帶你迅速提升Python文件處理的逼格
    這是菜鳥學python的第31篇原創文章閱讀本文大概需要6分鐘文件這塊知識已經講了好幾篇,第一篇是2個小例子入門第二篇是文件語法和場景的一個總覽第三篇是一個綜合小例子實戰一下,可以融合前面所學的知識這一篇算是收尾吧,回憶我以前寫過的python程序,我覺得python文件處理有這麼幾個模塊非常重要,但是一般沒有人告訴你
  • Python批量修改圖片尺寸
    任務描述:一個文件夾下面有好多圖片格式是png,大小不一。
  • 用Python拷貝word圖片到指定文件
    作者:小小明,Pandas數據處理專家,致力於幫助無數數據從業者解決數據處理難題編輯:朱小五,一隻不務正業的數據狗日常工作中,領導要求你將一份 Word 文檔中的圖片存儲到一個文件夾內,你可能會一邊內心崩潰,一邊開始一張張的 另存為
  • 實例15:用Python批量轉換doc文件為docx文件
    python-docx模塊雖然強大,但卻不能處理後綴為".doc"的word文件。如果強制讀取doc文件,將會報如下錯誤。
  • 如何 Import 自定義的 Python 模塊?
    模塊一樣,通過import導入呢?背景在實際的工作過程中,經常會用到一個功能,如果每次編寫代碼的時候都進行重新編寫或者打開已經編寫好的函數進行複製粘貼,這樣就顯得很麻煩,有沒有什麼方法可以像導入python模塊的那樣,直接把要用的函數以模塊名+方法的形式調用呢?
  • 【Python基礎】Python十大文件騷操作!!
    來源:Python數據科學作者:東哥起飛日常對於批量處理文件的需求非常多,用Python寫腳本可以非常方便地實現,但在這過程中難免會和文件打交道,第一次做會有很多文件的操作無從下手,只能找度娘。* 刪除文件夾前 True* 刪除文件夾後 False如果使用pathlib模塊,可以使用unlink()方法,而刪除目錄可以使用rmdir()方法。4. 獲取文件列表當我們分析某個工作或機器學習項目進行數據處理時,需要獲取特定目錄中的文件列表。
  • Python文件處理實用指南
    今天就來總結性地學習和回顧一下,Python各類文件處理。一、open()模式open()函數open(文件名,操作模式)函數用來以指定的模式打開一個給定文件名的文件。三、獲取文件屬性Python中有豐富的函數和方法用來獲取文件的信息。通過os模塊通過pathlib模塊實例演示使用os.stat()
  • 手把手教你使用python的zipfile模塊巧解word批量生成問題
    回復「書籍」即可獲贈Python從入門到進階共10本電子書大家好,我是宿者朽命,微信名是【🌑(這是月亮的背面)】,今天給大家分享使用python的zipfile模塊巧解word批量生成問題,這裡提供兩種方案給大家參考。
  • Python辦公自動化不得不會的十大文件操作!
    日常對於批量處理文件的需求非常多
  • Python處理文件的十個技巧
    前言在計算機編程過程中,處理文件是很經常的一件事,但是用的時候,我們總是感覺不能得心應手,在這篇文章中,將文件處理的常用方法總結一下,以備同學們參考。
  • Python十大文件騷操作!!
    來源:Python數據科學作者:東哥起飛▼文末贈送5本新書《零基礎學機器學習》,歡迎留言參與~日常對於批量處理文件的需求非常多,用Python寫腳本可以非常方便地實現,但在這過程中難免會和文件打交道,第一次做會有很多文件的操作無從下手,只能找度娘。