精华内容
下载资源
问答
  • Python递归遍历目录下所有文件

    千次阅读 2019-02-14 14:33:02
    方法一:os.listdir #!/usr/bin/python # -*- coding: utf-8 -*- ...#遍历filepath下所有文件,包括子目录  files = os.listdir(filepath)  for fi in files:  fi_d = os.path.join(filepath,fi) ...

    方法一:os.listdir

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import os
    def gci(filepath):
    #遍历filepath下所有文件,包括子目录
      files = os.listdir(filepath)
      for fi in files:
        fi_d = os.path.join(filepath,fi)            
        if os.path.isdir(fi_d):
          gci(fi_d)                  
        else:
          print(os.path.join(filepath,fi_d))
    
    #递归遍历/root目录下所有文件
    gci('/root')

    方法二:os.walk

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import os
    for fpathe,dirs,fs in os.walk('/root'):
      for f in fs:
        print(os.path.join(fpathe,f))

    列出当前目录下的所有文件:

    [i for i in os.listdir('.') if os.path.isdir(i)]

    列出当前目录下的所有py文件:

    [i for i in os.listdir('.') if os.path.isfile(i) and os.path.splitext(i)[1] == '.py']

    注:

    #使用os.walk方法遍历:

    import os
    path="D:\\Temp_del\\a"
    for i in os.walk(path):
        print(i)

    返回结果:

    ('D:\\Temp_del\\a', ['AFA', 'x64'], ['AudioFilterAgent.INI', 'Setup.exe'])
    ('D:\\Temp_del\\a\\AFA', ['222'], ['CAudioFilterAgent.exe', 'CAudioFilterAgent64.exe'])
    ('D:\\Temp_del\\a\\AFA\\222', [], ['新建日记本文档 - 副本.jnt', '新建日记本文档.jnt'])
    ('D:\\Temp_del\\a\\x64', ['bbb'], ['AudioFilterAgent.INI', 'setup64.exe'])
    ('D:\\Temp_del\\a\\x64\\bbb', [], ['CAudioFilterAgent.exe', 'CAudioFilterAgent64.exe'])

    返回结果说明:

    返回的是一个三元tupple(dirpath, dirnames, filenames),
    其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件.
    dirpath是一个string,代表目录的路径,
    dirnames是一个list,包含了dirpath下所有子目录的名字,
    filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).

    展开全文
  • 递归查询文件目录下所有文件(八)

    千次阅读 2019-05-13 19:13:53
    东家蝴蝶西家飞,白骑少年今日归。 愿,所有迷茫的人,都不再迷茫的,愿,所有努力...有时候,需要根据一个目录来查询该目录下所有文件信息。 主要是根据File 类来进行相应的处理。 这里讲其中的一种方式。 ...

    忽然发现,游戏并没有那么好玩,真正好玩的是什么? 人心。 而如何避免别人玩弄你的心,那就是让别人不敢玩弄你的心,代价是付不起的。 人神之恋,开始了。
    上一章简单介绍了两个字符串的最大公共子串(七),如果没有看过,请观看上一章

    一 查询目录下所有的文件

    有时候,需要根据一个目录来查询该目录下所有的文件信息。 主要是根据File 类来进行相应的处理。 这里讲其中的一种方式。

    public static void showFileList(File file){
    		if(!file.exists()){
    			System.out.println("这是一个错误的路径");
    		}
    		if(file.isDirectory()){ //如果是目录的话,递归调用这个查询方法。
    			File []files=file.listFiles();
    			for (File file2 : files) {
    				showFileList(file2);
    			}
    		}else{
    			if(file.isFile()){ //如果是文件的话
    				//System.out.println(file.getAbsolutePath());
    				//System.out.println(file.getPath()+File.separator+file.getName());
    				System.out.println(file); //这三种方式均可以。
    			}
    		}
    	}
    

    测试为:

    File root=new File("D:"+File.separator+"a");
    		showFileList(root); //0表示的是级别
    

    查询结果为:
    在这里插入图片描述

    二. 集合传入传出

    上面的这个方法,输出时竟然是System.out.println() 方式进行输出的,可以做简单的测试使用,但无法在代码中进行重用的,需要将所有的文件信息都存储起来。 可以存储在一个List 集合里面, 只存储文件名,所以用 String 类型即可。与第一种方式是一样的,只是将输出语句转换成add() 方法添加到集合里面。

    public static void showFileList(File file,List<String> fileNameList){
    		if(!file.exists()){
    			System.out.println("这是一个错误的路径");
    		}
    		if(file.isDirectory()){
    			File []files=file.listFiles();
    			for (File file2 : files) {
    				showFileList(file2);
    			}
    		}else{
    			//System.out.println(file.getAbsolutePath());
    			//System.out.println(file.getPath()+File.separator+file.getName());
    			if(file.isFile()){
    				fileNameList.add(file.getAbsolutePath());
    			}
    		}
    	}
    

    集合是从外面传递进来的,当然也可以在内部进行初始化,然后返回集合。

    调用形式为:

    		File root=new File("D:"+File.separator+"a");
    		List<String> fileNameList=new ArrayList<String>();
    		showFileList(root,fileNameList);
    		for(String fileName:fileNameList){
    			System.out.println(fileName);
    		}
    

    输出的结果,与上面一样。

    三. 树型展示文件列表

    上面只是展示最后一层的文件名,各个文件之间不容易一眼看出级别,如果能够树型 tree 展示就很好了。
    在这里插入图片描述
    如这样形式的简单展示。 其实,这个主要的思想就是在文件的名称前端添加空格,后面是正常的文件名,主要是对空格进行相应的处理。

    public static void showFileList(File dir,int level){
    		//级别进行++的处理。
    		System.out.println(getLevelFormatter(level)+dir.getName());
    		// 级别是局部参数
    		level++;
    		if(dir.isDirectory()){  //是目录的话
    			//列出目录下的所有文件,也可以是目录。
    			File[] file=dir.listFiles();
    			for (File file2 : file) {
    				showFileList(file2, level);
    			}
    		}
    	}
    

    //对文件名称进行处理的方式为

    public static String getLevelFormatter(int level){
    		StringBuilder sb=new StringBuilder("-|");
    		while(level>0){
    			// 四个空格,可以多个使用。
    			sb.insert(0,"    ");
    			level--;
    		}
    		return sb.toString();
    	}
    

    刚开始时,传入的级别是0. 测试方法为:

    		File root=new File("D:"+File.separator+"a");
    		showFileList(root,0); //0表示的是级别
    

    结果与上面的一致。

    谢谢!!!

    展开全文
  • mr编程递归显示hdfs目录下所有文件

    千次阅读 2016-10-26 19:32:50
    递归算法解决汉诺塔、阶乘等问题都很经典,一般我们查询系统中目录下所有文件也会用到递归的思想。 下面我们用java代码来实现打印本地指定路径所有文件: /** * 递归打印本地目录 * @param file */ ...

    递归: 程序调用自身的编程技巧称为递归。

    用递归算法解决汉诺塔、阶乘等问题都很经典,一般我们查询系统中目录下的所有文件也会用到递归的思想。

    • 下面我们用java代码来实现打印本地指定路径下的所有文件:
    /**
     * 递归打印本地目录
     * @param file
     */
    public static void printLocal(File file) {
    
        if (file.isDirectory()) {
    
            File[] files = file.listFiles();
    
            if (files != null) {
    
                for (int i = 0; i < files.length; i++) {
    
                    //递归调用
                    print(files[i]);
                }
            }
    
            System.out.println(file);
        }
    }

    按照上面的思想,那打印hdfs下指定路径的所有文件名字岂不是一样?所以我们可以用以下代码来实现。

    • 打印hdfs指定路径下的所有文件:
    package com.lijie.recursion;
    
    import java.net.URI;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.FileUtil;
    import org.apache.hadoop.fs.Path;
    
    /**
     * 
     * @author lijie
     *
     */
    public class RecurSionTest {
        public static void main(String[] args) throws Exception {
    
            //调用递归打印目录的方法
            printDir("/");
    
        }
    
        /**
         * 递归打印目录
         * @param dir
         * @throws Exception
         */
        public static void printDir(String dir) throws Exception {
    
            FileSystem fs = getFileSystem();
    
            FileStatus[] globStatus = fs.listStatus(new Path(dir));
    
            Path[] stat2Paths = FileUtil.stat2Paths(globStatus);
    
            for (int i = 0; i < stat2Paths.length; i++) {
    
                System.out.println(stat2Paths[i].toString());
    
                //判断是否为文件夹
                if (fs.isDirectory(stat2Paths[i])) {
    
                    //递归调用
                    printDir(stat2Paths[i].toString());
                }
            }
        }
    
        /**
         * 获取FileSystem
         * @param dir
         * @return
         * @throws Exception
         */
        public static FileSystem getFileSystem() throws Exception {
    
            Configuration conf = new Configuration();
    
            URI uri = new URI("hdfs://lijie:9000");
    
            FileSystem fs = FileSystem.get(uri, conf);
    
            return fs;
        }
    }
    

    结果如下:
    这里写图片描述

    展开全文
  • 主要介绍了shell脚本递归遍历目录及子目录的例子,需要的朋友可以参考
  • SVN 递归目录下所有文件

    千次阅读 2018-04-24 14:37:26
    mac没有小乌龟,命令行svn add提交不全,搜到以下方式,亲测好用。。。svn add . --no-ignore --force(参考链接:...提交代码"顺便记录一下修改svn地址:首先你得进入到svn的目录,svn info看一下s...

    mac没有小乌龟,命令行svn add提交不全,搜到以下方式,亲测好用。。。

    svn add . --no-ignore --force

    (参考链接:https://blog.csdn.net/yefl007/article/details/46506281

    之后再提交代码就OK了:svn commit -m "提交代码"


    顺便记录一下修改svn地址:

    首先你得进入到svn的目录,svn info看一下

    svn switch --relocate https://原地址 https://新地址

    回滚:

    svn log --查看svn提交版本

    svn diff "" --查看当前你的代码更新了什么东西

    提交你的代码(add, commit)

    svn up --更新你的代码

    svn merge -r xxx(刚提交):xxx(需要恢复的版本) "" --回滚

    svn diff "" --显示空说明成功


    展开全文
  • * 递归遍历文件目录/文件 * @param string $dir 文件的路径 * @return array $result 返回文件路径数组 * * DIRECTORY_SEPARATOR * 目录分隔符,是定义php的内置常量。在调试机器上,在windows我们习惯性的...
  • 使用递归查看所有目录文件

    千次阅读 2019-05-08 09:39:17
    使用递归查看所有目录文件
  • 相对于ls或者ll,可能find在这个时候更加给力 先看我的目录结构 tree命令是查看目录的结构,而且...即可递归统计出文件夹下所有文件的数目 同理 对于文件夹 注意,这里面包含了当前文件夹,所以统计出来...
  • 本代码是linux下递归输出指定路径文件夹和文件内容的,已测试通过,有需要的自己下载!
  • python递归遍历目录和子目录下所有文件,并将文件目录存入列表 本文编写了一个函数,实现递归查找目标目录path和目标目录下的多层子目录下所有文件,并将所有文件的path 存放于一个list列表中。 import os def ...
  • 文件格式:指的是文件哪种类型。 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; usi.....
  • 因为需求的变化,线上资源需要批量更新,现在将遍历目录中的文件及文件夹的方法记录一下,免得忘记。 知识点 $( ls - l ) 执行命令,获取命令行结果 ${val} 使用之前的变量,等同于 $val ,花括号只是起到告知...
  • 1 /* 2 使用递归找出某目录(&...)所有目录以及子文件 3 */ 4 5 import java.util.*; 6 import java.io.*; 7 8 public class FileRecursionPrintDemo{ 9 public static void main(String[] args){ ...
  • 文件,快捷方式和文件夹的type不一样,根据需要修改中间的代码。   int readPCDfilename(string basePath, vector<string> &PCDNameList) { DIR *dir; struct dirent *ptr; if ((dir = opendir(basePath...
  •  自己写了一个简单的小方法,通过递归的方式找到指定目录下,想要的文件,包括目录下和子目录下所有文件。 package research; import java.io.File; import java.util.ArrayList; import java.util.List; /** ...
  • //根目录 System.out.println(getSpace(level)+dir.getName()); level++; File[] files=dir.listFiles(); for(int i=0;i;i++){ if(files[i].isDirectory()){ //还是目录,继续遍历 listAll...
  • 一个简单的目录递归函数 第一种实现办法:用dir返回对象 第二种实现办法:用readdir()函数
  • Windows下删除制定文件夹下所有文件,如有目录递归删除子目录下的文件。 网上找了一下,Windows下删除文件的API有libc库里的remove(),删除文件夹有rmdir(),但rmdir()不能删除子目录。如不考虑程序安全性,...
  • [b][color=green][size=large] find命令,是个非常nice的命令,如果你还不了解这...(1)找出某个目录下所有文件,并且是csv结尾的: [/size][/color][/b] [code="java"][search@dnode1 2015-04-1...
  • linux下列出当前目录下所有目录名称问题 ls -lR |grep -v ^d|awk '{print $9}' |tr -s '\n' 一些其他命令 # 递归查询目录下文件个数 ls -d */*|wc -l # 递归查询子文件 ls -lR */*|grep ...
  • * 列出指定目录下(包括其子目录)的所有文件 */ public static void listDirectory(File dir)throws IOException{ if(!dir.exists()){ throw new IllegalArgumentException("目录"+ dir +"...
  • public class Dem01 { public void test(File ... //创建File格式的数组files 之后fi作为参数调用listFiles()方法,创建fi目录下的新的数组 for(File fi:files) { //此处会遍历files数组中的元素,将值逐个赋给fi...
  • * 给定一个目录递归的列出下面所有的子目录文件 * * @author xyy * @create 2017-05-09 19:21 **/ public class FileList { public static void main(String[] args) { String fileName = "F:\
  • linux c编程实现ls -l 递归调用子目录缩进打印文件信息
  • 1.获取一级目录名 private static void getPath(Path path, BufferedWriter writer) { try { if (fileSystem == null || path == null) { return; } //获取文...
  • 利用shell脚本遍历指定路径所有文件   #! /bin/bash function read_dir() { for file in `ls $1` do if [ -d $1"/"$file ]; # 判断是否是目录,是目录递归 then read_dir $1"/"$file elif ...
  • windows cmd  递归计算某目录下文件数目 dir /b /s /a:-D | find /v /c "$$$$" /s 递归 /a:-D 除去文件夹
  • php 递归查询目录所有文件

    千次阅读 2016-12-19 10:36:11
    这里介绍两种方式,在具体应用中有差别,可能是...​//显示目录 $dir= '/path';​ $dh = opendir($dir);//打开目录 while(($d = readdir($dh)) != false){  //逐个文件读取,添加!=false条件,是为避免
  • 运行该程序,可以显示当前目录下的子目录文件信息,如同DOS的DIR命令一样。可以轻易修改以便递归访问所有目录。(和操作系统中的FCB-文件控制块概念相关)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 149,520
精华内容 59,808
关键字:

显示目录下所有文件递归