python遍历目录的例子(不用递归)

 代码如下 复制代码

import os,stat

class DirectoryStatWalker:
    def __init__(self,directory):
        self.stack=[directory]
        self.files=[]
        self.index=0

    def __getitem__(self,index):
        while 1:
            try:
                file=self.files[self.index]
                self.index=self.index+1
            except IndexError:
                self.directory = self.stack.pop()
                self.files = os.listdir(self.directory)
                self.index = 0
            else:
                fullname = os.path.join(self.directory,file)
                st = os.stat(fullname)
                mode = st[stat.ST_MODE]
                if stat.S_ISDIR(mode) and not stat.S_ISLNK(mode):
                    self.stack.append(fullname)
                return fullname,st

for file,st in  DirectoryStatWalker(r'F:btsyncmovie'):
    print(file,st[stat.ST_SIZE])

这里没用使用递归的方式来做,但是结果却是一样的。

时间: 2024-09-20 18:54:43

python遍历目录的例子(不用递归)的相关文章

Python遍历目录中的所有文件的方法_python

os.walk生成器os.walk(PATH), PATH是个文件夹路径,当然可以用.或者../这样啦. 返回的是个三元元组为元素的列表, 每个元素代表了一个文件夹下的内容.第一个就是当前文件夹下内容. 返回的三元元组代表(该工作文件夹, 该文件夹下的文件夹的列表, 该文件夹下文件的列表). 所以, 获得所有子文件夹, 就是(d代表这三元元组): os.path.join(d[0],d[1]); 获得所有子文件, 就是: os.path.join(d[0],d[2]); 以下例子使用了两套循环,

Python遍历目录并批量更换文件名和目录名的方法_python

本文实例讲述了Python遍历目录并批量更换文件名和目录名的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2014-03-07 #summary: 深度遍历指定目录,并将子目录和文件名改为小写 #注意,此程序只针对windows,windows下文件(夹)名不区分大小写 import os import os.path import shutil #读入指定目录并转换为绝对路径 rootdir = raw_input('ro

python遍历目录文件脚本的示例

例子 自己写的一个Python遍历文件脚本,对查到的文件进行特定的处理.没啥技术含量,但是也记录一下吧.  代码如下 复制代码 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import os import shutil dir = "/mnt/Packages" class Packages:     def __init__(self,srcdir,desdir):         self.sdir=srcdir    

Python遍历目录的4种方法实例介绍_python

1.os.popen运行shell列表命令 复制代码 代码如下: def traverseDirByShell(path):     for f in os.popen('ls ' + path):         print f.strip() 2.利用glob模块 glob.glob(path)返回带目录的文件名.通配符和shell相似.path不能包含shell变量. 复制代码 代码如下: def traverseDirByGlob(path):     path = os.path.ex

PHP采用自定义函数实现遍历目录下所有文件的方法_php技巧

目录的遍历是PHP程序设计中经常会用到的一个功能,很多PHP项目都有这一功能模块.今天本文就来实例解析一下PHP采用自定义函数实现遍历目录下所有文件的方法.具体方法如下: 方法一:使用readir()遍历目录 实现代码如下: function listDir($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while($file = readdir($handle)) { if($file != '.' && $file !

Java文件操作之按行读取文件和遍历目录的方法_java

按行读取文件 package test; import java.io.*; import java.util.*; public class ReadTest { public static List<String> first_list; public static List<String> second_list; public ReadTest() { first_list = new LinkedList<>(); second_list = new Link

PHP不用递归遍历目录下所有文件的代码_php实例

实现代码: /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

PHP教程:不用递归遍历目录下的文件

  如果要遍历某个目录下的所有文件(包括子目录),最首先想到的思路就是用递归:先处理当前目录,再处理当前目录下的子目录.不用递归可不可以呢?以前学数据结构的时候看到过,递归其实是利用堆栈来实现的,递归的特点就是不断的调用自身,最后一次的调用是最先执行完的,倒数第二次调用是其次执行完的,依次类推,最初的调用是最后执行完的.如果理解了递归的原理,其实就可以把所有用递归的实现转化为非递归的实现. 用非递归方式遍历某个目录下的所有文件,思路主要分三步: 1. 创建一个数组,将要遍历的这个目录放入;(其实

shell脚本递归遍历目录及子目录的例子分享_linux shell

用shell写的递归遍历目录的脚本,脚本实现递归遍历指定目录,打印目录下的文件名. 实例1: 复制代码 代码如下: #!/bin/sh function scandir() {    local cur_dir parent_dir workdir    workdir=$1    cd ${workdir}    if [ ${workdir} = "/" ]    then        cur_dir=""    else        cur_dir=$(p