
判断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类,递归读取本地目录,速度特别慢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)