前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >glob - 被忽略的python超强文件批量处理模块

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

作者头像
Python大数据分析
发布2022-04-03 13:38:33
2.2K0
发布2022-04-03 13:38:33
举报
文章被收录于专栏:Python大数据分析

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

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

Python-glob模块简介

glob模块通配符

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

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

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

样例一:当前路径文件下以 .py结尾的所有文件.

代码语言:javascript
复制
for fname in glob.glob("./*.py"):
    print(fname)

样例二:当前路径文件下以 .python开头并且有一个字符的所有py文件.

代码语言:javascript
复制
for fname in glob.glob("./python?.py"):
    print(fname)

样例三:当前路径文件下以 .python开头并且有一个数字的所有py文件.

代码语言:javascript
复制
for fname in glob.glob("./python[0-9].py"):
    print(fname)

glob()方法

glob模块的主要方法是glob(),该方法返回的是所有匹配的文件路径列表,该方法需要一个参数来指定一个路径(可以是相对或绝对路径),通常也可以和os.path.join() 方法一起使用。返回值当前路径下的文件名,注意:不包括子文件夹里的文件哦。示例如下:

代码语言:javascript
复制
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表示并排平行堆叠。

代码表示如下:

代码语言:javascript
复制
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。

如果大家觉得还不错可以关注这位小伙伴的号,内容非常干货.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python-glob模块简介
    • glob模块通配符
      • glob()方法
        • iglob()方法
        • Python-glob模块实例应用
        • 总结
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档