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!