溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析

發(fā)布時(shí)間:2022-01-10 18:47:40 來(lái)源:億速云 閱讀:229 作者:柒染 欄目:開(kāi)發(fā)技術(shù)

這篇文章給大家介紹Python遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

一、使用Python進(jìn)行文件和文件夾的判斷

  • 遞歸 :主要目的就是遍歷文件夾和文件

  • 對(duì)文件夾和文件進(jìn)行屬性判斷

  • 首先對(duì)文件夾進(jìn)行遍歷,看文件夾里有什么樣的文件,讀取出文件夾中的所有文件

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'+'這是一個(gè)文件')
        filename,extension = os.path.splitext(file)
        #分割路徑,返回路徑名和文件擴(kuò)展名的元組
        if extension == ".txt":
            print(filename+'這是一個(gè)文本文件')
        elif extension == ".xlsx":
            print(filename+'這是一個(gè)excel文件')
    if os.path.isdir(path + "/" +file):
        print(file+"是一個(gè)文件夾")

讀取結(jié)果:

Python遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析

二、使用Python完整的獲取所有文件及文件夾并讀取相應(yīng)的文件

在我們遍歷文件夾的基礎(chǔ)上,如何實(shí)現(xiàn)快速讀取指定文件,提高工作效率?
只需要在上述代碼的基礎(chǔ)上,導(dǎo)入pandas包,read_excel_我們所需要的文件即可

import pandas as pd
import os 
path = './data'
def get_all_files(path):
    print('-'*25+'函數(shù)被調(diào)用'+'-'*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)
            #分割路徑,返回路徑名和文件擴(kuò)展名的元組
            if extension == ".txt":
                print(filename+"#####是文本文件#####")
                print("讀取"+filename+"文件中的內(nèi)容...........")
                data = pd.read_table(path+'/'+file)
                print(data)
            elif extension == ".xlsx":
                print(filename+'#####是Excel文件#####')
                print("讀取"+filename+"文件中的內(nèi)容...........")
                data = pd.read_excel(path+'/'+file)
                print(data)
            elif extension == ".csv":
                print(filename+'#####是csv文件#####')
                print("讀取"+filename+"文件中的內(nèi)容...........")
                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遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析

讀取成功! 

三、使用Python合并數(shù)據(jù)

在日常工作中我們有很多表格需要處理,如何批量的將很多個(gè)文件夾中的表格合并到一起?

重點(diǎn):

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

append的使用

  • other: 是要添加的數(shù)據(jù),append很不挑食,這個(gè)other可以是dataframe,dict,Seris,list等等。

  • ignore_index: 參數(shù)為T(mén)rue時(shí)將在數(shù)據(jù)合并后,按照0,1,2,3....的順序重新設(shè)置索引,忽略了舊索引。

  • verify_integrity:參數(shù)為T(mén)rue時(shí),如果合并的數(shù)據(jù)與原數(shù)據(jù)包含索引相同的行,將報(bào)錯(cuò)。

path='./project_data'
 ## 聲明一個(gè)空的DataFrame,用來(lái)做最終的數(shù)據(jù)合并
final_data = pd.DataFrame()
# 聲明一個(gè)空的DataFrame,用來(lái)做最終的數(shù)據(jù)合并
final_data = pd.DataFrame()
 
def get_all_files(path):
    global final_data
    print("-"*20 + "函數(shù)被調(diào)用" + "-"*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+"文件中的內(nèi)容...........")
                data = pd.read_table(path+'/' +file)
                print(data)
            elif extension=='.xlsx':
                print(filename+"#####是Excel文件#####")
                print("讀取"+filename+"文件中的內(nèi)容...........")
                data = pd.read_excel(path+'/' +file)
                print(data)
            elif extension=='.csv':
                print(filename + "是csv文件,是本次需要處理的文件")
                # 獲取文件內(nèi)容
                file_data = pd.read_csv(path +'/'+file)
                final_data = final_data.append(file_data,ignore_index=True)
                #append描述:在列表ls最后(末尾)添加一個(gè)元素object
                print("《《《《合并"+filename+"文件數(shù)據(jù)》》》》")
                
        # 判斷是不是文件夾
        elif os.path.isdir(path+'/'+file):
            print(file + "¥¥¥¥是文件夾¥¥¥¥¥¥")
            get_all_files(path + '/' + file)
get_all_files(path)
print("數(shù)據(jù)合并完成")

Python遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析

開(kāi)始合并,我們來(lái)查看一下合并后的數(shù)據(jù):

Python遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析

 總共1000多萬(wàn)條數(shù)據(jù),如果我們用Excel的話估計(jì)要很多時(shí)間將這么多表格合并,而且會(huì)很卡。

關(guān)于Python遍歷目錄下文件、讀取、千萬(wàn)條數(shù)據(jù)合并實(shí)例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI