數據處理技巧 | glob - 被忽略的超強文件批量處理模塊

2021-02-19 DataCharm

本篇推文開始,我將介紹一些常用的Python數據處理小技巧,幫助大家更好的處理數據,提高工作效率。今天我將介紹Python自帶的一個模塊-glob模塊。涉及的內容主要如下:

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。




相關焦點

  • 使用Python圖像處理庫Pillow處理圖像文件
    本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。使用PIL.Image模塊的open()函數打開磁碟圖像文件時,會根據文件內容自動確定文件格式。
  • Python處理文件的十個技巧
    from pathlib import Pathprint(f"當前目錄是:{Path.cwd()}")>>> 輸出:當前目錄是:D:\myprogram\jupyter_book注意:pathlib模塊是在Python3.4及以後的版本中才出現的,如果在之前的版本中,只能用os模塊來處理。
  • Python文件處理實用指南
    對文件的操作算是Python中一個基礎又重要的知識點了,無論是在爬蟲、數據分析、Web開發,還是在編寫圖形界面、進行數據分析,都有可能需要用到文件相關的操作
  • 一文看懂Python對文件和文件夾的操作: 含os, shutil和glob模塊.Python學習面試必讀.
    在利用Python或Django從事Web開發時除了必須要了解Python面向對象的編程思想,還必須熟練掌握對文件夾和文件的操作。小編我精心準備了個小結,教你如何利用python進行基本的文件和文件夾操作,並重點介紹了如何使用os, shutil和glob模塊進行常見的文件和文件夾操作,如遍歷,刪除文件和查找文件。
  • 【技巧】虹吸墨批量處理文本常見操作
    普通的文本編輯器,只能進行簡單的文字編輯操作,而其實除了文本處理,經常我們還需要對文本文件進行分割合併、批量改名、文件加密、文本計算等處理,往往需要啟用多個第三方軟體。今天則介紹給大家一款高級文本編輯器——虹吸墨,它除了基本的文字處理之外,常見文本文件的處理工作也能一併完成。
  • word批處理技巧:如何快速創建批量文件夾
    但是,像上圖中需要創建幾十或上百個文件夾,你用手工創建,那麼,效率顯而易見會很差,並且會非常麻煩!其實,曾經的我也用過手工創建這個笨方法,被折騰得不輕。幸好發現了一個好方法,今天在這裡分享給大家,只用幾個步驟即可批量創建文件夾,能大大的提升工作效率。方法很簡單,就是利用Word結合Dos命令來搞定!
  • word批處理技巧:如何快速創建批量文件夾
    在日常辦公中,我們時常需要整理或保存歸類很多文件。這個時候,就少不了要新建許多文件夾進行分類放置,效果如下圖所示。如果只是一個兩文件夾,你一個個手工創建,然後重命名文件,沒問題。但是,像上圖中需要創建幾十或上百個文件夾,你用手工創建,那麼,效率顯而易見會很差,並且會非常麻煩!其實,曾經的我也用過手工創建這個笨方法,被折騰得不輕。幸好發現了一個好方法,今天在這裡分享給大家,只用幾個步驟即可批量創建文件夾,能大大的提升工作效率。方法很簡單,就是利用Word結合Dos命令來搞定!
  • 三行Python代碼,讓數據處理速度提高2到6倍
    通過使用 Python 的 concurrent.futures 模塊,我們只需要 3 行代碼就可以讓一個普通的程序轉換成適用於多核處理器並行處理的程序。標準方法讓我們舉一個簡單的例子,在單個文件夾中有一個圖片數據集,其中有數萬張圖片。在這裡,我們決定使用 1000 張。
  • 【Python基礎】Python十大文件騷操作!!
    來源:Python數據科學作者:東哥起飛日常對於批量處理文件的需求非常多,用Python寫腳本可以非常方便地實現,但在這過程中難免會和文件打交道,第一次做會有很多文件的操作無從下手,只能找度娘。* 刪除文件夾前 True* 刪除文件夾後 False如果使用pathlib模塊,可以使用unlink()方法,而刪除目錄可以使用rmdir()方法。4. 獲取文件列表當我們分析某個工作或機器學習項目進行數據處理時,需要獲取特定目錄中的文件列表。
  • Python辦公自動化不得不會的十大文件操作!
    * 刪除文件夾前 True* 刪除文件夾後 False如果使用pathlib模塊,可以使用unlink()方法,而刪除目錄可以使用rmdir()方法。4. 獲取文件列表當我們分析某個工作或機器學習項目進行數據處理時,需要獲取特定目錄中的文件列表。
  • Excel高效技巧:表格的批量處理
    例如:需要用Excel統計每個員工的考勤和評分狀態且每個員工的數據分別存放在一個工作表中,此時,如果手動創建命名工作表,恐怕得費好多時間了。今天給大家分享2個小技巧:批量創建/拆分工作表、批量重命名工作表。一、批量創建/拆分工作表如下圖,首先將需要創建的工作表名輸入在A列單元格中,案例為8位員工,分別對每位員工創建評分表和考勤表。
  • Python十大文件騷操作!!
    來源:Python數據科學作者:東哥起飛▼文末贈送5本新書《零基礎學機器學習》,歡迎留言參與~日常對於批量處理文件的需求非常多,用Python寫腳本可以非常方便地實現,但在這過程中難免會和文件打交道,第一次做會有很多文件的操作無從下手,只能找度娘。
  • 用Python拷貝word圖片到指定文件
    作者:小小明,Pandas數據處理專家,致力於幫助無數數據從業者解決數據處理難題編輯:朱小五,一隻不務正業的數據狗日常工作中,領導要求你將一份 Word 文檔中的圖片存儲到一個文件夾內,你可能會一邊內心崩潰,一邊開始一張張的 另存為
  • excel數據處理技巧:提取文件名的方法匯總
    前段時間我們和大家分享了使用BAT命令提取文件名稱的方法,不少小夥伴都被這個命令給驚豔到了。其實,提取文件名稱的方法遠不止這一種,甚至還有比BAT命令更簡單的方法,趕緊來看看吧!學習更多技巧,請收藏部落窩教育excel圖文教程。
  • 通用CPCI數據處理與IO模塊的設計與實現
    摘要:數據處理與IO模塊主要完成數據計算、模擬和數位訊號的採集與處理等功能。給出一種通用的CPCI數據處理與IO模塊的設計方案,模塊採用滿足CPCI總線規範的加固型設計,可以實現主控模塊和外設模塊的自適應轉換。
  • 圍觀大神是如何用 Python 處理文件的?
    建議一:使用 pathlib 模塊如果你需要在 Python 裡進行文件處理,那麼標準庫中的 os 和 os.path 兄弟倆一定是你無法避開的兩個模塊。在這兩個模塊裡,有著非常多與文件路徑處理、文件讀寫、文件狀態查看相關的工具函數。讓我用一個例子來展示一下它們的使用場景。有一個目錄裡裝了很多數據文件,但是它們的後綴名並不統一,既有 .txt,又有 .csv。
  • 文件操作So Easy!來,一起體驗下Python的Pathlib模塊~
    使用pathlib模塊,可以使代碼使用更優雅,可讀和Pythonic代碼重寫上面的兩個示例,如:>>> path.parent>>> (pathlib.Path.home() / 'realpython.txt').is_file()Python文件路徑處理問題
  • 如何序列化處理數據?真的會用pickle嗎?python中常用模塊詳解
    數據序列化和反序列化處理這類處理是很常見的,比如,一個程序的配置文件,記錄程序的信息,便於下次打開程序將該信息提取出來(信息的持久化存儲);從程序內存中讀取的數據加載到本地後這兩個特點是序列化和反序列化處理數據的優點所在。
  • Python3處理文件路徑的小技巧
    大家以前用python2的時候,處理文件經常會使用open命令來讀取,但是在不同的平臺,譬如Windows、Linux、MacOS裡,文件名的路徑是不同的,在Python3裡,有一個新的模塊pathlib,可以輕鬆處理這個問題。
  • 組合技巧丨快速把文件批量分類到不同文件夾中
    前面幾節,我們分享了文件批量篩選、拷貝方法、批量提取文件名稱的方法,批量更改文件名稱的方法,以及批量刪除指定文件的方法。每一個方法都非常的簡單好用,如果把他們進行組合使用的話更是能發揮出更加強大的威力!