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

        共 2682字,需瀏覽 6分鐘

         ·

        2021-04-29 19:08

        今天我將介紹Python自帶的一個文件操作模塊-glob模塊。涉及的內(nèi)容主要如下:

        • Python-glob模塊簡介
        • Python-glob模塊實例應(yīng)用

        Python-glob模塊簡介

        glob模塊通配符

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

        1. *代表0個或多個字符。
        2. **匹配所有文件,包括目錄,子目錄和子目錄里面的文件。
        3. ?代表一個字符。
        4. []匹配指定范圍內(nèi)的字符,如[0-9]匹配數(shù)字。
        5. [!] 匹配不在指定范圍內(nèi)的字符。

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

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

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

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

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

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

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

        glob()方法

        glob模塊的主要方法是glob(),該方法返回的是所有匹配的文件路徑列表,該方法需要一個參數(shù)來指定一個路徑(可以是相對或絕對路徑),通常也可以和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'#匹配所有g(shù)if文件
        # ['1.gif', 'donghua.gif','Z.gif']

        iglob()方法

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

        Python-glob模塊實例應(yīng)用

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

        1. axis=0表示從頭到尾垂直堆疊。
        2. aixs=1表示并排平行堆疊。

        代碼表示如下:

        import pandas as pd
        import glob
        import os
        input_path = "" #數(shù)據(jù)所有文件所在路徑
        out_file = "" # 輸出路徑
        # 使用glob.glob()通配符找出所有以.csv結(jié)尾的文件
        all_files = glob.glob(os.path.join(input_path,"*.csv"))all_data_
        #數(shù)據(jù)框列表
        all_data_frames = []
        #循環(huán)操作文件
        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)

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

        總結(jié)

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

        如果大家覺得還不錯可以關(guān)注這位小伙伴的號,內(nèi)容非常干貨。


        加入知識星球【我們談?wù)摂?shù)據(jù)科學(xué)】

        400+小伙伴一起學(xué)習(xí)!








        · 推薦閱讀 ·

        純Python輕松開發(fā)實時可視化儀表盤

        送100本Python&數(shù)據(jù)書籍,看看都有哪些?

        Python高性能空間數(shù)據(jù)計算包:PyGEOS


        瀏覽 40
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. bbwbbw性老妇bbwbbw | 日韩毛片免费 | 欧美日产久久 | 久久不色 | 国产无码高清视频 |