精华内容
下载资源
问答
  • 递归搜索指定文件夹下面的所有文件夹,找到文件名中包含目标字符串的文件,并拷贝到新目录下面,由此完成筛选。 脚本如下 import os import sys import shutil if sys.getdefaultencoding() != 'gbk': reload...

    递归搜索指定文件夹下面的所有文件夹,找到文件名中包含目标字符串的文件,并拷贝到新目录下面,由此完成筛选。
    使用python3的脚本如下:

    import os
    import sys
    import shutil
    
    source_dir = r'E:\workspace\python'
    target_dir = r'E:\workspace\python\copyfiles'
    
    def getFileList(path):
        filenames_set = set()
        for dirpath, dirnames, filenames in os.walk(source_dir):
            for file in filenames:
                filenames_set.add(dirpath  + '\\'+ file)
        return filenames_set
    
    
    def copyFile(subStr, filenames_set):
        bSearchFileExist = False
        for fileNAME in filenames_set:
            dir, strfile = os.path.split(fileNAME)
            if len(subStr) > 0 and strfile.find(subStr)>=0:
                bSearchFileExist = True
                oldname = fileNAME
                newname = '\\'.join([target_dir,strfile])
                if os.path.exists(newname):
                    print('%s already exist!' % newname)
                    continue
                try:
                    shutil.copyfile(oldname, newname)
                    print('file %s %s!' % (newname, 'copy over'))
                except IOError as e:
                    print("Unable to copy file. %s" % e)
                    exit(1)
                except:
                    print("Unexpected error:", sys.exc_info())
                    exit(1)
        if not bSearchFileExist:
            print('files that name like "%s" not exist!' % subStr)
    
    
    if __name__ == '__main__':
        if not os.path.exists(target_dir):
            os.makedirs(target_dir)
        filenames_set = getFileList(source_dir)
        while 1:
            str = input()
            copyFile(str, filenames_set)
    

    使用方法:

    1. 新建一个txt,把脚本拷贝进去。再把这个文件命名成copy.py。修改脚本中的sorce_dir和target_dir后就可以使用,例如我这里source_dir写的是 r"E:\workspace\python",target_dir写的是r"E:\workspace\python\copyfiles",r的作用是: 在r后面的字符串里的‘\’字符没有转义作用,这样就不用重复写两个斜杠了。

    2. 打开命令行进入copy.py的目录,输入python copy.py

    3. 输入要搜索的文件名(字符串的一部分即可),比如这里输入童话大王,回车,就会输出copy over。
      需要注意的是拷贝成功一次就会输出一遍copy over,输出几次就证明找到了几个包含目标文件名的文件,可以在target_dir文件夹里验证这一点。
      在这里插入图片描述

    4. 然后输入下一个搜索的文件名,回车即可复制下一批文件。

    5. 最后直接关闭cmd或者ctrl + c 就可以停止脚本

    展开全文
  • 批量汇总多Excel表:入门到处理各种特殊情况》。 另还录制了系列视频进行免费发布:《【免费系列视频】Excel数据汇总特辑|多个案例,多种情况,举一反三!》 但是,即使案例再多,也仅能作为参考,最关键的还是要...

           前期,我写了较多关于用PQ进行数据汇总的文章,形成了一个系列:

    《年终必用!批量汇总多Excel表:从入门到处理各种特殊情况》。

           另还录制了系列视频进行免费发布:

    《【免费系列视频】Excel数据汇总特辑 | 多个案例,多种情况,举一反三!》

           但是,即使案例再多,也仅能作为参考,最关键的还是要自己把基础知识掌握并熟练运用,这样,再多的情况,都可以自己按需处理了——基础和思路是最重要的

           今天,再讲个最近有朋友问到的例子,即:

           汇总文件夹数据的时候,怎么能只读取文件夹中最近一天的表格(文件)?

           实际上,我们如果在用Power Query汇总文件夹数据的时候,仔细观察从文件夹读出来的相关信息,就可以发现,在文件列表中,存在文件对应的创建时间、修改时间和访问时间,如下图所示:

    e43f3f15911fd1e5a3c937013afb3b38.png

           那么,有了这些信息,我们就可以筛选出文件夹中最近一天的数据来——但是,怎么筛选呢?“最近一天”不一定是昨天……

           实际上,这个在Power Query里非常简单,因为针对日期/时间的筛选,PQ提供了多种筛选方式,大家点开列的筛选按钮即可查看。我们要选择最近一天的,即可以选择“最晚”选项,如下图所示:

    2fa82145f524f73b375c981bb447dd8b.png

           从简单解决问题的角度,上面的筛选非常简单,但是,从学习的角度来说,我建议再仔细观察一下Power Query对这个“最晚”选择的实现方法,我们可以查看一下生成的步骤公式:

    d6ef0ed76adab414182c6477a1687ad6.png

           这里显然仍然是用Table.SelectRows对表进行筛选,条件里面,则先用List.Max函数取出最大日期,然后去判断(选择)列里等于最大值数据。当然,你可以对这个公式进行一定的简化,比如改成这样:

    9a010e34ff2c3c5963565f459dea7836.png

           即将List.Max所取得的最大值直接用作筛选条件,不需要经过先设定变量然后引用的过程。

           为什么可以这样?为什么List.Max里取的是“源”步骤里的数据?——欢迎留言说说您的理解。

    Power新书榜第1 | 最适合入门打基础

    当当京东超低折扣进行中

    最通俗易懂Power系列视频 -

    购书领60元视频券 or 直购视频送签名书

    3dc9979b982217bcb8b3f8c6e8b9bbc4.png

    点亮“在看”,转发朋友圈

    一起学习,共同进步!

    点“阅读原文”看视频

    更易理解,学得更快

    展开全文
  • 1.使用文件名称过滤器筛选将指定文件夹下的小于200K的小文件获取并打印。 2.键盘接收一个文件夹路径,统计该文件夹大小。 3.键盘接收一个文件夹路径,删除该文件夹。 4.键盘接收一个文件夹路径,把文件夹中的所有...

    1.使用文件名称过滤器筛选将指定文件夹下的小于200K的小文件获取并打印。
    2.从键盘接收一个文件夹路径,统计该文件夹大小。
    3.从键盘接收一个文件夹路径,删除该文件夹。
    4.从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
    例如:
    aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
    在这里插入图片描述
    实现代码:

    import java.io.File;
    import java.io.FileFilter;
    import java.util.Scanner;
    public class HomeWork1 {
    	public static void main(String[] args) {
    		System.out.print("请输入文件夹路径:");
    		File file = new File(new Scanner(System.in).next());
    		System.out.println(file.getName());
    		getAll(file,0);
    		System.out.println("--------------------");
    		getThings(file);
    		getFileSize(file);
    		System.out.print("请输入要删除的文件路径:");
    		File file2 = new File(new Scanner(System.in).next());
    		delete(file2);
    	}
    //	1.使用文件名称过滤器筛选将指定文件夹下的小于200K的小文件获取并打印
    	public static void getThings(File file) {
    		File[] fileArray = file.listFiles(new HomeWork1Inter());
    		for(File f : fileArray) {
    			if(f.isDirectory())
    				getThings(file);
    			else
    				System.out.println(f.getName());
    		}
    	}
    	
    //	2.从键盘接收一个文件夹路径,统计该文件夹大小。
    	public static void getFileSize(File file) {
    		File[] fileArray = file.listFiles();
    		long fileSize = 0;
    		for(File f : fileArray) {
    			fileSize += f.length();
    		}
    		System.out.println(fileSize);
    	}
    	
    //	3.从键盘接收一个文件夹路径,删除该文件夹。
    	public static void delete(File file) {
    		file.delete();
    	}
    	
    //	4.从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
    	public static void getAll(File file,int count) {
    		if(file.isDirectory()) {
    			File[] fileArray = file.listFiles();
    			for(File f : fileArray) {
    				if(count == 1)
    					System.out.print("\t");
    				if(f.isDirectory()) {
    					System.out.println("\t"+f.getName());
    					getAll(f,1);				
    				}
    				else
    					System.out.println("\t"+f.getName());
    			}
    			
    		}
    	}
    
    }
    
    //判断文件大小是否大于200k
    class HomeWork1Inter implements FileFilter {
    
    	@Override
    	public boolean accept(File pathName) {
    		if(pathName.isFile()) {
    			if(pathName.length() < 200*1024)
    				return true;
    		}
    		return false;
    	}
    
    }
    
    展开全文
  • #github.com上面下来的很多androidstudio项目(请参考上一篇github.com批量下载工程代码),代码的重复率特别高(一个一个看比较费时间,这个脚本函数只是查看他们的java文件名,有时候,20-30个项目一个一个对比...

    #从github.com 上面下来的很多android studio项目(如果有eclispe格式的工程,需要手动删除掉,没有做兼容)(请参考上一篇github.com批量下载工程代码),代码的重复率特别高(一个一个看比较费时间,这个脚本函数只是查看他们的java文件名,有时候,20-30个项目一个一个对比非常费时,把他们文件名打印出来,更容易去除里面多个重复的项目)

    import os

     

    def get_file_path(root_path,file_list,dir_list):

        #获取该目录下所有的文件名称和目录名称

        dir_or_files = os.listdir(root_path)

        for dir_file in dir_or_files:

            #获取目录或者文件的路径

            dir_file_path = os.path.join(root_path,dir_file)

            #判断该路径为文件还是路径

            if os.path.isdir(dir_file_path):

                dir_list.append(dir_file_path)

                #递归获取所有文件和目录的路径

                get_file_path(dir_file_path,file_list,dir_list)

            else:

                # file_list.append(dir_file_path) #完整路径的文件名

                file_list.append(dir_file) #只有文件名


     

    def walkFileInfos(dir, fileInfos):

        #用来存放所有的文件路径

        file_list = []

        #用来存放所有的目录路径

        dir_list = []

        get_file_path(dir,file_list,dir_list)

        # print(file_list)

        # print(dir_list)

        info = {}

        info['dir'] = dir

        info['dir_list'] = dir_list

        info['file_list'] = file_list

        fileInfos.append(info)

        # print('*********file sizes=' + str(len(file_list)) + '********')

     

    if __name__ == "__main__":

        #根目录路径

        rootdir=r'F:\ximalaya'

        print(os.listdir(rootdir))

        dirs = os.listdir(rootdir)

        # 声明字典

        fileInfos = []

        for dir in dirs:

            path = os.path.join(rootdir,dir)

            javadir=''.join([path,r'\app\src\main\java'])

            walkFileInfos(javadir, fileInfos)

        

        #按文件数目大小排序,默认升序

        fileInfos = sorted(fileInfos, key = lambda info: len(info['file_list']))

     

        #打印排序后的文件信息

        for info in fileInfos:

            # print(info)

            # print(info['dir_list'])

            print(info['dir'])

            print(info['file_list'])

            print('*********file sizes=' + str(len(info['file_list'])) + '********')

    展开全文
  • 昨天有个需求,要获取服务器某个目录下的某些类型的文件,考虑到服务器即有Linux、又有Windows,所以写了一个Python小程序来完成这项工作。Linux服务器有CentOS、Fedora等,都预先安装...Python操作文件文件夹使用...
  • 谢邀,这是个非常常见的需求,解决起来也...先看下用excel怎么做新建一个文件,依次选择“数据”-“新建查询”- “从文件”-“从文件夹”,然后选择待合并的文件所在文件夹。在弹出话框中依次点击“合并”和“合并...
  • 1.点击Tranches,可以看到有很多选项,根据需求选择合适的分类,点击下载,我选择sdf格式的下载,下载方式选择powershell,将文件下载到桌面,放在screening文件夹里,并修改文件名为ligands.ps1; 2.开始...
  • 1、多个工作簿快速合并汇总公司的软件里面导出来的数据,有些是CSV格式的,可以用这种方法我们在文件夹里面新建一个文本文档,里面输入一行代码,copy *.csv all.csv,如下所示: 保存这个文本文档,将它的后缀名...
  • 如,在“D:HistoryDatas”下有两个 Excel 文件数据格式为按照数据筛选要求,我们就要把文件夹内所有 Excel 中,类似上图圈住的数据行提取出来。另外,把结果输出到新的 Excel 文件。实现步骤1、 运行集算器可去润乾...
  • 一个文件夹里面有多个Excel,要求每个Excel 根据第三列提取数据,每当数据负值变化为零的时候,就提取这个负值所在的一行。 如,在“D:\HistoryDatas”下有两个 Excel 文件 数据格式为 按照数据筛选要求,...
  • 1、首先准备一个想要导出图片的Word文档“绘制螺旋线导入到PCB中.doc”; 2、打开Word文档,文件----另存为;... 5、关闭Word文档,你就在刚才保存的地方可以看到如下的文件文件夹; 6、打开“绘制螺旋线导入到PC
  • 背景: 之前我们公司的Jenkins有很多发布job,其中有些集成了sonar...接下来想起来好像每个job在文件系统都有一个对应的文件夹,应该可以这里下手 于是查到了Jenkins默认的job路径:~/.jenkins 里面的jobs文件
  • 最近有朋友说要帮忙做个东西,就是他有一堆的.txt文本文件,现在需要里面筛选他指定的内容,然后保存成为一个新的文件。本来打算用.net开发的,不过考虑到对方也没有安装framework,用起来还麻烦,所以最后还是用...
  • python shutil.move功能

    千次阅读 2020-04-29 13:43:24
    shutil模块是高级的 文件、文件夹、压缩包 处理模块,通常用这个函数拷贝或移动 用python将一个文件夹里筛选出来的文件信息,移动到新的文件夹中 ...
  • 结果回到家后,光分目录筛选文件就浪费了我整整一个晚上。痛定思痛,决定还是程序上来解决问题。 那么所有的磁盘文件目录都是树的结构,而遍历树最好的方法非"深度优先遍历...
  • java中io常用的工具

    2021-01-17 21:43:48
    java中io体系常用的工具文件管理创建文件夹删除文件文件中进行筛选文件的读写 input和outputFileInputStream 文件输入流拿到文件的字符拿到文件的数据(一个一个字节)拿到文件的数据(一次性读出来) java中常用...

空空如也

空空如也

1 2 3 4 5
收藏数 97
精华内容 38
关键字:

从文件夹里筛选文件