java,python遍历文件夹与子文件夹
Posted bitcarmanlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java,python遍历文件夹与子文件夹相关的知识,希望对你有一定的参考价值。
1.遍历文件夹树形结构
我们经常需要针对目录的树形结构进行遍历,即遍历目录中的子文件夹与文件。如果子文件夹里面还包含有文件夹,则继续递归进行遍历。
2.java实现方案
先直接上代码
import java.io.*;
/**
* author: wanglei
* create: 2022-08-24
*/
public class ReadFiles
private static void readDirectory(String path)
File file = new File(path);
File[] files = file.listFiles();
for(File fs: files)
String curpath = fs.getAbsolutePath();
String filename = fs.getName();
if (fs.isDirectory())
System.out.println(curpath + " is directory");
readDirectory(curpath);
else
System.out.println(curpath + " is file");
System.out.println("filename is: " + filename);
readFile(curpath);
System.out.println("**********\\n");
public static void readFile(String filepath)
try
BufferedReader br = new BufferedReader(new FileReader(new File(filepath)));
String line;
while((line = br.readLine()) != null)
System.out.println(line);
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
public static void main(String[] args)
String path = "xxx";
readDirectory(path);
上面代码的思路:
1.首先调用listFiles方法,返回Files数组,包含当前目录下的所有目录与文件。注意在java中,File对象可以表示文件,也可以表示目录。
2.调用File对象的isDirectory方法,判断其是否为目录。
3.如果为目录,则主方法递归。
4.如果为文件,进行相应操作(示例中为读取文件的内容)。
3.python实现方案
3.1 使用listdir的方式
老规矩,上代码
def get_filelist(path):
filelist = os.listdir(path)
for f in filelist:
absolutepath = os.path.join(path, f)
if os.path.isdir(absolutepath):
print("dirname is: ", absolutepath)
get_filelist(absolutepath)
elif os.path.isfile(absolutepath):
print("filename is: ", absolutepath)
readfile(absolutepath)
print("******************\\n")
def readfile(filename):
f = open(filename)
for line in f.readlines():
print(line.strip())
上面的思路跟java版本比较像
1.listdir(path)返回指定的文件夹包含的文件或文件夹名字列表。
2.判断是否为目录。如果为目录,主方法进行递归。
3.如果为文件,进行相应操作。
3.2 os.walk的方式
python中提供了walk方法,os.walk 的返回值是一个生成器(generator)。使用的时候我们不停遍历,可以获取生成器中的内容。对生成器每次遍历,获得的对象均为一个三元tuple(root, dirs, files)。其中
root是当前遍历的这个文件夹自己的地址。
dirs是一个list,里面是该文件夹中所有目录的名字,但是不包含子目录。
files也是一个list,里面是该文件夹中所有的文件,但是不包含子目录中的文件。
def walk_list(path):
for root, dirs, files in os.walk(path):
for d in dirs:
print("d is: ", os.path.join(root, d))
for f in files:
print("file is: ", os.path.join(root, f))
print("***********\\n")
以上是关于java,python遍历文件夹与子文件夹的主要内容,如果未能解决你的问题,请参考以下文章