Python批量读取文件(含子文件)

本文介绍Python如何读取文件夹下所有文件的方法。 主要用于合并多个文件的情况。
一、仅读取当前文件夹下的所有文件 要读取E盘data文件夹下的所有Excel文件,并合并成一个文件,可以使用以下方法:

import os 
import pandas as pd 
import glob


## 定义路径,注意文件夹之间用“\\”最后要有个“\\”
path='E:\\data\\'

## 读取当前文件夹下的所有文件
## 获取文件路径
files_path=glob.glob(os.path.join(path,"*.xlsx"))
## 进行文件合并
df=pd.DataFrame()
for f in all_files_path:
    each_df=pd.read_excel(f,sheet_name="Sheet1")
    df=df.append(each_df)

二、读取包含子文件夹内文档的所有文件 以下是读取子文件夹下所有文件的方法:

import os 
import pandas as pd 
import glob


## 定义路径,注意文件夹之间用“\\”最后要有个“\\”
path='E:\\data\\'

## 获取所有文件的完整路径名
all_files_path=[]
for root, dirs, files in os.walk(path,topdown=False):
if len(files)>0:
        each_foder_files=[os.path.join(root,x) for x in files]
        all_files_path.extend(each_foder_files)


## 读取文件合并,这里需要保证所有文件的数据结构一致
## sheet_name用于指定读取的sheet名称,如果每个Excel里面只有一个sheet,则可以不指定
## 如果每个Excel的中要读取的sheet名称不同,则需要根据情况再补充代码确定名称了
df=pd.DataFrame()
for f in all_files_path:
    each_df=pd.read_excel(f,sheet_name="Sheet1")
    df=df.append(each_df)

三、所用到os和glob相关方法的解释(1)OS模块的相关方法os 模块提供了非常丰富的方法用来处理文件和目录。对于经常要进行文档操作来说是非常实用的一个模块。如:

  • os.getcwd(),用以获取当前工作目录。
  • os.chdir(path),用以改变当前工作目录。
  • os.listdir(path),用以返回path路径下的文件和文件夹的名字列表。

这里用到的os.walk()方法,是用于遍历目录,并返回目录名称的方法,语法和参数如下:


os.walk的语法和参数

(2)glob模块的相关方法glob模块用来查找文件目录和文件,并将搜索得到的结果返回到一个列表中。由于它支持几个正则通配符,所以我们可以用它来对文件进行关键字筛选,如上述代码中就筛选了包含“.xlsx”的文档。glob所支持的通配符类型:

*:匹配0个或多个字符;
**:匹配所有文件、目录、子目录和子目录里的文件(3.5版本新增);
?:代匹配一个字符;
[]:匹配指定范围内的字符,如[0-9]匹配数字,[a-z]匹配小写字母;

你可能感兴趣的:(Python批量读取文件(含子文件))