glob - 被忽略的python超强文件批量处理模块

Python大数据分析

共 2682字,需浏览 6分钟

 ·

2021-04-29 19:08

今天我将介绍Python自带的一个文件操作模块-glob模块涉及的内容主要如下:

  • Python-glob模块简介
  • Python-glob模块实例应用

Python-glob模块简介

glob模块通配符

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

  1. *代表0个或多个字符。
  2. **匹配所有文件,包括目录,子目录和子目录里面的文件。
  3. ?代表一个字符。
  4. []匹配指定范围内的字符,如[0-9]匹配数字。
  5. [!] 匹配不在指定范围内的字符。

下面我们具体举两个例子说明一下:

样例一:当前路径文件下以 .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参数来设置链接数据框的方式,如下:

  1. axis=0表示从头到尾垂直堆叠。
  2. aixs=1表示并排平行堆叠。

代码表示如下:

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


浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报