1. 程式人生 > >python遍歷資料夾——深度優先(DFS)/廣度優先(BFS)

python遍歷資料夾——深度優先(DFS)/廣度優先(BFS)

import os
def BFS_Dir(path, dirCallback = None, fileCallback = None):
    queue = []
    ret = []
    queue.append(path);
    while len(queue) > 0:
        tmp = queue.pop(0)
        if(os.path.isdir(tmp)):
            ret.append(tmp)
            for item in os.listdir(tmp):
                queue.append(os.path.join(tmp, item))
            if dirCallback:
                dirCallback(tmp)
        elif(os.path.isfile(tmp)):
            ret.append(tmp)
            if fileCallback:
                fileCallback(tmp)
    return ret


def DFS_Dir(path, dirCallback = None, fileCallback = None):
    stack = []
    ret = []
    stack.append(path);
    while len(stack) > 0:
        tmp = stack.pop(len(stack) - 1)
        if(os.path.isdir(tmp)):
            ret.append(tmp)
            for item in os.listdir(tmp):
                stack.append(os.path.join(tmp, item))
            if dirCallback:
                dirCallback(tmp)
        elif(os.path.isfile(tmp)):
            ret.append(tmp)
            if fileCallback:
                fileCallback(tmp)
    return ret

def printDir(path):
    print "dir: " + path

def printFile(path):
    print "file: " + path

b = BFS_Dir(r'C:\tmp', printDir, printFile)
d = DFS_Dir(r'C:\tmp', printDir, printFile)


相關推薦

python資料——深度優先(DFS)/廣度優先(BFS)

import os def BFS_Dir(path, dirCallback = None, fileCallback = None): queue = [] ret = [] queue.append(path); while len(q

Python 資料裡面的內容 5*

root_path='./result' sub_path=root_path+'./tmp' for root, dirs, files in os.walk(sub_path): for file in files: if os.path.splitext(file)[

Python資料下所有電子字典檔案(不包括子資料)提取單詞到一個檔案

經過若干天的嘗試,最後凝鍊出了這麼一段程式碼,集幾天研究之成果,可謂費盡心機。裡面用到的成果包括: 1.with open...as 2.處理有亂碼的文字 於是趕緊先寫下來,做個階段性成果。 import re import os.path p=re.compile

python資料種的檔案,篩選複製,txt寫

import os, shutil # 規範化絕對路徑 src_dir = os.getcwd() #得到當前py檔案的路徑 # if not os.path.exists(dst_dir): # os.makedirs(dst_dir) # print("fistr_dir is:\t{

Python 資料中的檔案,並將檔案放到列表中

最經剛開始接觸Python,學習了用Python實現遍歷資料夾裡的檔案(只遍歷檔案不要目錄),並將這些檔案放到一個列表中 廢話不多說,直接上程式碼 def allDir(path): f=[] for root,dirs,files in o

如何用python資料下的所有excel檔案

大資料處理經常要用到一堆表格,然後需要把資料匯入一個list中進行各種演算法分析,簡單講一下自己的做法: 1.如何讀取excel檔案 網上的版本很多,在xlrd模組基礎上,找到一些原始碼: import xdrlib ,sys import xlrd def open_

Python 資料中的指定型別檔案

首先羅列一下os.path模組的相關函式: 1.判斷型函式: exists() 指定路徑(檔案或者目錄)是否存在 isabs() 指定路徑是否為絕對路徑 isdir() 指定路徑是否存在且為一個目錄 isfile() 指定路徑是

Python資料查詢最新的檔案 demo

前情提要:需要再報告資料夾中,查詢最新建立的報告檔案。 程式碼呈現: import os import time dir = r'C:\Users\jishi\Desktop\mine\work\report' a = os.path.getatime(dir) #輸出最近訪問時間

python資料取到檔案並輸出每種檔案有幾個

1. 遍歷某個資料夾下的所有檔案,並統計各個檔案型別的個數。 import os#引入os模組 def lister(curr_dir): stack=[curr_dir] x = 0#定義mp4檔案 y = 0#定義txt檔案 while stack: dir

python資料和檔案

在Python中,檔案操作主要來自os模組,主要方法如下: os.listdir(dirname):列出dirname下的目錄和檔案 os.getcwd():獲得當前工作目錄 os.curdir:返回當前目錄('.') os.chdir(dirname):改變工作目錄到di

Python資料 處理json檔案

有兩種做法:os.walk()、pathlib庫,個人感覺pathlib庫的path.glob用來匹配檔案比較簡單。 下面是第二種做法的例項(第一種做法百度有很多文章): from pathlib import Path import json analysis_ro

Python資料和讀寫檔案的方法

#-*- coding: UTF-8 -*- ''' 1、讀取指定目錄下的所有檔案 2、讀取指定檔案,輸出檔案內容 3、建立一個檔案並儲存到指定目錄 ''' import os # 遍歷指定目錄,顯示目錄下的所有檔名 def eachFile(filepath): pathDir = os.l

深度優先廣度優先資料下符合條件的檔案

第一步:需要有一個萬能過濾器:MyFileFilter.java package com.ten.practice.test15; import java.io.File; import jav

廣度優先資料深度遞迴資料

// 廣度遍歷目錄 BOOL TraverseDirBF(const string& strDir) {     deque<string> dequePath;     string strTemp = strDir;     int iFileCou

python高階程式設計】一、資料目錄

前言 如何遍歷查找出某個資料夾內所有的子檔案呢?並且找出某個字尾的所有檔案 walk功能簡介 1.os.walk() 方法用於通過在目錄樹種遊走輸出在目錄中的檔名,向上或者向下。 2.walk()方法語法格式如下: os.walk(top,topdown=True,onerr

python遞迴資料裡面的所有檔案

import os path = "F:/new" #資料夾目錄 datas = [] def eachFile(filepath): fileNames = os.listdir(filepath) # 獲取當前路徑下的檔名,返回List for file

python中如何資料及其子資料中的所有檔案(附實現程式碼)

【時間】2018.10.27 【題目】python中如何遍歷資料夾及其子資料夾中的所有檔案 目錄 概述 概述       本文提供了python中如何遍歷資料夾及其子資料夾中的所有檔案的兩種方法。兩者均返回檔名列表(可以選擇檔名列表或者是包含完整路徑的檔名列

python使用os.walk和os.path.join來資料的檔案(包括子資料下的檔案)

使用os.walk和os.path.join來遍歷資料夾的檔案 import os import os.path path = 'C://' for root, dirs, files in os.walk(path):    for file in files:  

Python利用os.walk資料

os.walk這個某塊是遍歷一個目錄常用的模組,它返回一個包含3個元素的元祖:dirpath,dirnames,filenames.dirpath是以string字串形式返回該目錄下所有的絕對路徑;dirnames是以列表list形式返回每一個絕對路徑下的資

python 用棧和佇列實現二叉樹的深度優先(三種)和廣度優先

#coding=utf-8 #自定義佇列 class pyqueue(): def __init__(self, size): self.queue = [] self.size = size self.end =