Python遍歷目錄下文件、讀取、千萬條數(shù)據(jù)合并詳情
一、使用Python進(jìn)行文件和文件夾的判斷
- 遞歸 :主要目的就是遍歷文件夾和文件
- 對文件夾和文件進(jìn)行屬性判斷
- 首先對文件夾進(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'+'這是一個文件') ? ? ? ? filename,extension = os.path.splitext(file) ? ? ? ? #分割路徑,返回路徑名和文件擴(kuò)展名的元組 ? ? ? ? if extension == ".txt": ? ? ? ? ? ? print(filename+'這是一個文本文件') ? ? ? ? elif extension == ".xlsx": ? ? ? ? ? ? print(filename+'這是一個excel文件') ? ? if os.path.isdir(path + "/" +file): ? ? ? ? print(file+"是一個文件夾")
讀取結(jié)果:
二、使用Python完整的獲取所有文件及文件夾并讀取相應(yīng)的文件
在我們遍歷文件夾的基礎(chǔ)上,如何實現(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合并數(shù)據(jù)
在日常工作中我們有很多表格需要處理,如何批量的將很多個文件夾中的表格合并到一起?
重點:
DataFrame.append(*other*, *ignore_index=False*, *verify_integrity=False*, *sort=None*)
append的使用
other:
是要添加的數(shù)據(jù),append很不挑食,這個other可以是dataframe,dict,Seris,list等等。ignore_index:
參數(shù)為True時將在數(shù)據(jù)合并后,按照0,1,2,3....的順序重新設(shè)置索引,忽略了舊索引。verify_integrity:
參數(shù)為True時,如果合并的數(shù)據(jù)與原數(shù)據(jù)包含索引相同的行,將報錯。
path='./project_data' ?## 聲明一個空的DataFrame,用來做最終的數(shù)據(jù)合并 final_data = pd.DataFrame() # 聲明一個空的DataFrame,用來做最終的數(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最后(末尾)添加一個元素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ù)合并完成")
開始合并,我們來查看一下合并后的數(shù)據(jù):
總共1000多萬條數(shù)據(jù),如果我們用Excel的話估計要很多時間將這么多表格合并,而且會很卡,
到此這篇關(guān)于Python遍歷目錄下文件、讀取、千萬條數(shù)據(jù)合并詳情的文章就介紹到這了,更多相關(guān)Python遍歷目錄下的文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 函數(shù)編編程的三大法寶map+filter+reduce分享
這篇文章主要介紹了Python 函數(shù)編編程的三大法寶map,filter,reduce的分享,python利用 map 在一個可迭代對象的各項上調(diào)用函數(shù)的工具;利用 filter 來過濾項;利用 reduce 把函數(shù)作用在成對的項上來運行結(jié)果的工具,下面我們就來對這三者進(jìn)行詳細(xì)的介紹,需要的朋友可以參考下2022-03-03Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換
這篇文章主要介紹了Python中列表,元組,字典和集合的區(qū)別及它們之間的轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05膠水語言Python與C/C++的相互調(diào)用的實現(xiàn)
這篇文章主要介紹了膠水語言Python與C/C++的相互調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05