<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          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)的字符。

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

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

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

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

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

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

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

          glob()方法

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

          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()方法一次只獲取一個匹配路徑。(這個方法較少用到,這里不再進(jìn)行介紹)

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

          本節(jié)將舉一個具體的示例講解glob.glob()方法的應(yīng)用,具體為 讀取多個CSV文件中的數(shù)據(jù),并將所有數(shù)據(jù)合并到一個CSV文件 中,這里我們還使用Pandas庫用于數(shù)據(jù)處理操作(這也是我日常數(shù)據(jù)處理中進(jìn)場使用大方法哦)。其基本過程文字?jǐn)⑹鋈缦拢?strong style="color: rgb(145, 109, 213);">「將每個輸入文件中讀取到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文件進(jìn)行合并,大大提高數(shù)據(jù)處理效率。當(dāng)然,以上代碼只是列舉了CSV文件,其實,對所有相同文件或具有特定字符串文件名的所有文件都可以通過glob.glob()方法進(jìn)行批量處理,希望大家可以多使用該方法進(jìn)行多個文件的批量操作。

          總結(jié)

          本期推文介紹了一個在日常工作中經(jīng)常使用到的文件操作小技巧即:使用 glob.glob() 批量處理多個文件,進(jìn)行自動化和規(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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费黄色视频网站在线 | 久久午夜鲁丝 | 亚洲草逼 | 日批视频网址 | 91久久人澡 |