Python遍历目录下文件、读取、千万条数据合并详情

目录

一、使用Python进行文件和文件夹的判断

  • 递归 :主要目的就是遍历文件夹和文件
  • 对文件夹和文件进行属性判断
  • 首先对文件夹进行遍历,看文件夹里有什么样的文件,读取出文件夹中的所有文件
import os
path= \"./data\" #路径
files = os.listdir(path)
#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
for file in files:
    print(file)
    if os.path.isfile(path+ \"/\"+file):
        #os.path.isfile(path) 判断路径是否为文件
        print(\'file\'+\'这是一个文件\')
        filename,extension = os.path.splitext(file)
        #分割路径,返回路径名和文件扩展名的元组
        if extension == \".txt\":
            print(filename+\'这是一个文本文件\')
        elif extension == \".xlsx\":
            print(filename+\'这是一个excel文件\')
    if os.path.isdir(path + \"/\" +file):
        print(file+\"是一个文件夹\")

读取结果:

Python遍历目录下文件、读取、千万条数据合并详情

二、使用Python完整的获取所有文件及文件夹并读取相应的文件

在我们遍历文件夹的基础上,如何实现快速读取指定文件,提高工作效率?
只需要在上述代码的基础上,导入pandas包,read_excel_我们所需要的文件即可

import pandas as pd
import os 
path = \'./data\'
def get_all_files(path):
    print(\'-\'*25+\'函数被调用\'+\'-\'*25)
    files = os.listdir(path)
#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
    for file in files:
        if os.path.isfile(path+ \"/\"+file):
            #os.path.isfile(path) 判断路径是否为文件
            print(\'file\'+\">>>>>是文件\")
            filename,extension = os.path.splitext(file)
            #分割路径,返回路径名和文件扩展名的元组
            if extension == \".txt\":
                print(filename+\"#####是文本文件#####\")
                print(\"读取\"+filename+\"文件中的内容...........\")
                data = pd.read_table(path+\'/\'+file)
                print(data)
            elif extension == \".xlsx\":
                print(filename+\'#####是Excel文件#####\')
                print(\"读取\"+filename+\"文件中的内容...........\")
                data = pd.read_excel(path+\'/\'+file)
                print(data)
            elif extension == \".csv\":
                print(filename+\'#####是csv文件#####\')
                print(\"读取\"+filename+\"文件中的内容...........\")
                data = pd.read_csv(path+\'/\'+file)
                print(data)
        if os.path.isdir(path + \"/\" +file):
            print(file+\"¥¥¥¥¥¥¥是文件夹¥¥¥¥¥¥¥\")
            get_all_files(path+\'/\'+file)
get_all_files(path)    

Python遍历目录下文件、读取、千万条数据合并详情

读取成功! 

三、使用Python合并数据

在日常工作中我们有很多表格需要处理,如何批量的将很多个文件夹中的表格合并到一起?

重点:

DataFrame.append(*other*, *ignore_index=False*, *verify_integrity=False*, *sort=None*)

append的使用

  • other: 是要添加的数据,append很不挑食,这个other可以是dataframe,dict,Seris,list等等。
  • ignore_index: 参数为True时将在数据合并后,按照0,1,2,3….的顺序重新设置索引,忽略了旧索引。
  • verify_integrity:参数为True时,如果合并的数据与原数据包含索引相同的行,将报错。
path=\'./project_data\'
 ## 声明一个空的DataFrame,用来做最终的数据合并
final_data = pd.DataFrame()
# 声明一个空的DataFrame,用来做最终的数据合并
final_data = pd.DataFrame()
 
def get_all_files(path):
    global final_data
    print(\"-\"*20 + \"函数被调用\" + \"-\"*20)
    files = os.listdir(path)
    for file in files:
        if os.path.isfile(path + \"/\" +file):
            print(file+\">>>>>是文件\")
            filename,extension=os.path.splitext(file)
            # 判断是不是文本文件
            if extension == \".txt\" :
                print(filename+\"#####是文本文件#####\")
                print(\"读取\"+filename+\"文件中的内容...........\")
                data = pd.read_table(path+\'/\' +file)
                print(data)
            elif extension==\'.xlsx\':
                print(filename+\"#####是Excel文件#####\")
                print(\"读取\"+filename+\"文件中的内容...........\")
                data = pd.read_excel(path+\'/\' +file)
                print(data)
            elif extension==\'.csv\':
                print(filename + \"是csv文件,是本次需要处理的文件\")
                # 获取文件内容
                file_data = pd.read_csv(path +\'/\'+file)
                final_data = final_data.append(file_data,ignore_index=True)
                #append描述:在列表ls最后(末尾)添加一个元素object
                print(\"《《《《合并\"+filename+\"文件数据》》》》\")
                
        # 判断是不是文件夹
        elif os.path.isdir(path+\'/\'+file):
            print(file + \"¥¥¥¥是文件夹¥¥¥¥¥¥\")
            get_all_files(path + \'/\' + file)
get_all_files(path)
print(\"数据合并完成\")

Python遍历目录下文件、读取、千万条数据合并详情

开始合并,我们来查看一下合并后的数据:

Python遍历目录下文件、读取、千万条数据合并详情

 总共1000多万条数据,如果我们用Excel的话估计要很多时间将这么多表格合并,而且会很卡,

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容