前言
最近在工作中碰到一個很棘手的問題,需要讀取出ubuntu系統(tǒng)中某個目錄下所有文件,由于服務(wù)器中存儲的文件實在太多,導致此過程效率十分低下,動輒需要等待一個小時之久,還只是一個目錄。于是如何快速獲取文件列表便是這兩天的頭等大事,折騰半天找到一個較為快速的方法,記錄如下,話不多說了,來一起看看詳細的介紹吧。
多種實現(xiàn)方法
嘗試了多種方法,有編程的和非編程的。
1、walk
python的walk庫能夠遞歸的讀取目錄下所有文件,這個是最常規(guī)的方法,然而效率有些緩慢。實現(xiàn)很簡單,不贅述。
2、os.scandir
python中的os.scandir方法官方解釋為快速讀取目錄,測試了一下速度相對walk而言是由提高,但是還是達不到要求,也需要自己寫遞歸,代碼如下:
def scan_path(file_path, level = 3): files = [] if level >= 0: path = os.scandir(file_path) for p in path: if p.is_dir(): files.extend(scan_path(p.path, level - 1)) else: files.append(p.path) return files
當這兩種方法都行不通的時候我就開始考慮才用非編程方法了。理論上來說python的執(zhí)行效率已經(jīng)蠻高了,雖然可能達不到c或者c++的速度,但是相比java、C#來說已經(jīng)夠快了,所以就沒有再考慮編程的方式,而是轉(zhuǎn)向linux系統(tǒng)原生的方式。
3、ls
最先想到的就是ls命令,使用如下命令
ls 主站蜘蛛池模板: 香港 | 轮台县| 开化县| 崇文区| 连平县| 潮州市| 封丘县| 太湖县| 宜良县| 武平县| 晋宁县| 叙永县| 兰州市| 岳普湖县| 德安县| 临沭县| 罗源县| 荣成市| 三明市| 榆树市| 高清| 三门峡市| 城口县| 阜新市| 通州区| 淮北市| 广东省| 株洲市| 海阳市| 休宁县| 长泰县| 汨罗市| 肃北| 玉龙| 镇平县| 遵化市| 康定县| 定远县| 平度市| 孟州市| 区。|