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完整的獲取所有文件及文件夾並讀取相應的文件

在我們遍歷文件夾的基礎上,如何實現快速讀取指定文件,提高工作效率?
隻需要在上述代碼的基礎上,導入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合並數據

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

重點:

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("數據合並完成")

開始合並,我們來查看一下合並後的數據:

 總共1000多萬條數據,如果我們用Excel的話估計要很多時間將這麼多表格合並,而且會很卡,

到此這篇關於Python遍歷目錄下文件、讀取、千萬條數據合並詳情的文章就介紹到這瞭,更多相關Python遍歷目錄下的文件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: