python如何递归查找文件,我下面的代码是哪里出错了,怎么只能查找当前目录

python如何递归查找文件,我下面的代码是哪里出错了,怎么只能查找当前目录,第1张

判断isdir用的参数不对,应该是file_path,不应该是i

def listdir (path='',name=None,dirlist=[]):

#example: arr=adihelistdir('') 将返回当前目录下的所有文件,不许含有空格

files=oslistdir(pathdecode('utf-8'))

#获取目录

for i in files:

file_path=path+ossep+i

if ospathisdir(file_path):

dirlistappend(file_path)

listdir(file_path,name,dirlist)

return dirlist

可以使用oswalk()遍历所有文件,不用自己写递归函数。

#/bin/python

import os

for root in oswalk(r"d:\newtest"):

print root

print "\n

如果想把该目录下所有的文件都统计出来,包括子目录、子目录的子目录。。。

可以使用oswalk来找出目录下所有的文件

import os

print sum([len(x) for _, _, x in oswalk(ospathdirname("test"))])

#test是目录名

oswalk会递归遍历指定目录下的文件,返回值分别为当前文件夹完整路径,当前文件夹中的文件夹和文件夹中的文件。我们只需要文件,所以其他的都不取出来了,直接使用"_"占位就行了。

如果只是想统计出当前目录下的文件,不包括子目录的。就使用oslistdir,只统计是文件的个数:

len([x for x in oslistdir(ospathdirname(__file__)) if ospathisfile(x)])

感觉主要subs[i]listFiles()调用比较花时间,

不知道你用subs[i]listFiles()!=null这个判断的目的是什么,

如果替换成subs[i]exist或者isDirectory不知道符合不符合你的要求,

要是符合的话最好换了吧。

如果实在不能替换的话,至少可以定义一个变量保存它的结果,这样每次递归可以少调一次,能节省不少时间呢。

还有一点,把所有东西都放到StringBuffer s中也会是一个瓶颈,

最好是StringBuffer中的数据达到一定长度的时候就把它输出到其他的地方,

比如文件。

/

  获取指定路径下的所有文件列表

 

  @param dir 要查找的目录

  @return

 /

public static List<String> getFileList(String dir) {

    List<String> listFile = new ArrayList<>();

    File dirFile = new File(dir);

    //如果不是目录文件,则直接返回

    if (dirFileisDirectory()) {

        //获得文件夹下的文件列表,然后根据文件类型分别处理

        File[] files = dirFilelistFiles();

        if (null != files && fileslength > 0) {

            //根据时间排序

            Arrayssort(files, new Comparator<File>() {

                public int compare(File f1, File f2) {

                    return (int) (f1lastModified() - f2lastModified());

                }

                public boolean equals(Object obj) {

                    return true;

                }

            });

            for (File file : files) {

                //如果不是目录,直接添加

                if (!fileisDirectory()) {

                    listFileadd(filegetAbsolutePath());

                } else {

                    //对于目录文件,递归调用

                    listFileaddAll(getFileList(filegetAbsolutePath()));

                }

            }

        }

    }

    return listFile;

}

以上就是关于python如何递归查找文件,我下面的代码是哪里出错了,怎么只能查找当前目录全部的内容,包括:python如何递归查找文件,我下面的代码是哪里出错了,怎么只能查找当前目录、如何获取目录下的文件数(一行Python)、java File类,递归读取本地目录,速度特别慢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9771324.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存