精华内容
下载资源
问答
  • 某人需求:以某excel中姓名信息为名建立一系列文件夹,分别将四个文件夹中与人名对应的文件汇总该人名对应的文件夹中,共近200人,手工处理费时费力。 需求分解: 从excel中提取代号index和姓名信息name 以...
  • python批量提取文件夹指定名称的文件 最近使用数据集时遇到一个问题,需要把每个文件夹下第10张图片复制出来放一个指定文件夹里,手动复制太麻烦,所以找了点代码自己改了改。 目录 要提取每个子文件夹下...

    python批量提取子文件夹下指定名称的文件

    最近使用数据集时遇到一个问题,需要把每个文件夹下第10张图片复制出来放到一个指定的文件夹里,手动复制太麻烦,所以找了点代码自己改了改。

    目录

    目录样式
    要提取每个子文件夹下名称后缀为_10.jpg的文件到一个新的文件夹中。

    代码

    import os
    import re
    import xlwt
    
    # 递归复制文件夹内的文件
    def copyFiles(sourceDir, targetDir):
        for file in os.listdir(sourceDir):
            sourceDir1 = os.path.join(sourceDir, file)  # 路径名拼接
            targetDir1 = os.path.join(targetDir)
            for file in os.listdir(sourceDir1):
                sourceDir2 = os.path.join(sourceDir1, file)
                # 忽略某些特定的子文件夹
                if sourceDir2.find("视点") > 0:
                    # 列出源目录文件和文件夹
                    for file in os.listdir(sourceDir2):
                        # 拼接完整路径
                        if re.search('_10.jpg', file):
                            sourceFile = os.path.join(sourceDir2, file)
                            targetFile = os.path.join(targetDir1, file)
    
                            if os.path.isfile(sourceFile):
                                if not os.path.exists(targetDir1):
                                    os.makedirs(targetDir1)
                                if not os.path.exists(targetFile) or (os.path.exists(targetFile) and (
                                        os.path.getsize(targetFile) != os.path.getsize(sourceFile))):
                                    open(targetFile, "wb").write(open(sourceFile, "rb").read())
    copyFiles("C:\\Users\\yaotong\\Desktop\\OFD_full_DB_labelled\\pic", "copy")
    

    os.listdir()列出目录路径

    语法:os.listdir(path),path:需要列出的目录路径
    用法:

    import os, sys
    
    # 打开文件
    path = "/pic"
    dirs = os.listdir( path )
    
    # 输出所有文件和文件夹
    for file in dirs:
       print file
    

    os.path.join() 路径拼接函数

    语法:os.path.join(path1,path2,path3,…)
    用法:

    path1 = pic
    path2 = 0001
    path = os.path.join(path1,path2)
    print(path)
    
    结果:pic\0001
    

    find()函数

    语法:string.find(‘str’)返回从string扫描到str的起始位置,未找到返回-1
    用法:

    string = 'hello,world'
    print(string.find('ello'))
    
    结果: (1,4)
    

    re.rearch()扫描字符串

    语法:re.search(pattern, string)
    pattern:要找到的字符串
    string:要扫描的字符串
    用法:

    import re
    if re.rearch('he','helloworld')
    	print(true)
    	
    结果:true
    

    其他方法

    os.path.isfile()判断该路径是否是文件
    os.path.exists()判断是否存在,存在返回True,否则False
    os.makedirs()创建路径

    copyFiles共有两个参数:
    sourceDir:需要遍历的文件夹路径
    targetDir:遍历后保存查找到文件的路径

    结果

    新建文本文档,命名为test.py,粘贴代码。shift加鼠标右键→在此处打开命令窗口,输入python test.py回车。

    好了

    展开全文
  • 本人喜欢在B站上看视频,无奈B站的资源有时候会突然就没了,就会把那些好的资源下载...遂想利用所学的Qt将其自动命名并移动特定的文件夹里,而且那个视频的格式是blv的,一般播放器压根打不开,幸好我用的是PotPl...

    本人喜欢在B站上看视频,无奈B站的资源有时候会突然就没了,就会把那些好的资源下载到手机上,主要是PC端的B站貌似不直接支持下载,然后再传到电脑上。在PC端打开相关资源一看,全是数字命名,有用的资料全在JSON文件里。一个俩个还可以手动命名,这一下有几十个,就有点考验人了。遂想利用所学的Qt将其自动命名并移动到特定的文件夹里,而且那个视频的格式是blv的,一般播放器压根打不开,幸好我用的是PotPlayer,可以打开但是播放列表只能显示打开的那个,没打开的就不会显示在播放列表里,还得重新去打开文件播放。我尝试直接更改后缀名为mp4,文件可以播放没播放的文件也能显示在播放列表上,完美。下图是原始的视频资料,其中0.blv就是视频资源,可以用PotPlayer播放,entry.json记载了相关资料,待会命名就得从这里面找相关的名字。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    重新改写了下。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    这个是entry.json里的视频所在文件夹和视频的名字,待会在程序解析json的时候会用到

    1.新建工程,然后再widget.h里添加相关头文件

    #include <QJsonDocument>        //这个是对JSON文档的支持
    #include <QJsonParseError>    //解析JSON时出错就靠它来判断
    #include <QJsonObject>        //对JSON对象的支持
    #include <QFile>                //文件操作
    #include <QDir>                //目录操作
    #include <QDebug>            //方便调试

    2.创建相关变量并初始化

    private:
        Ui::Widget *ui;
        QString path;        //文件所在路径
        QString dPath;        //将提取出来的视频重新放置的文件夹路径
        QString nameDir;    //视频所在的上层文件夹名,就是entry.json中的type_tag的值
        QString NameEntry;    //解析出来的视频名字,就是entry.json中的title中的值
    path = "F:/B站视频/试试";        //文件所在的路径
    dPath = "F:/B站视频/试试/";    //将视频重新存放的路径
    readDir();                    //开始解析相应的文件夹

    3.readDir()函数的实现,并且这个是按固定格式来的,例如在以我电脑上的路径举例,现在当前目录(试试)一个一个遍历,在每一个文件夹(1)中又再次遍历寻找entry.json文件并进行解析,如果解析成功,则再次进行视频所在的文件夹(lua.flv360.bili2api.16)再次遍历查找视频文件,对其进行重命名(包括更换路径)。由于没重构过,所有整体看起来有点乱,命名也是,还请见谅。(改进了一下,用递归来遍历)

    void Widget::dealDir(QString pa)
    {
        QDir dir(pa);
        if(!dir.exists()){
            qDebug() << "the dir isn't exist ";
            return;
        }
        //得到当前目录下所有文件夹,不包括.和..
        QFileInfoList list = dir.entryInfoList(QDir::NoDotAndDotDot|QDir::Dirs);
        //查找当前文件夹下是否有entry.json文件,利用过滤来查找
        QStringList filters;
        filters << "*.json";
        dir.setNameFilters(filters);
        QFileInfoList json = dir.entryInfoList();
        if(json.count() == 1){    //如果找到entry.json文件
            qDebug() << json.at(0).absoluteFilePath();
            if(AnalyJson(json.at(0).absoluteFilePath())){
                QString oldPath = pa+"/"+nameDir+"/";    //得到当前文件路径
                if(QFile::exists(oldPath+"0.blv")){      //判断是否存在
                    QString newPath = dPath+"/"+NameEntry+".mp4";//得到将要移动的文件绝对路径名
                    if(QFile::rename(oldPath+"0.blv",newPath)){
                        qDebug() << "successful";
                    }
                }
                //可能有些会有1.blv,同样处理
                if(QFile::exists(oldPath+"1.blv")){//寻找1.blv文件
                    QString newPath = dPath+"/"+NameEntry+"(1)"+".mp4";
                    if(QFile::rename(oldPath+"1.blv",newPath)){
                        qDebug() << "(1)successful";
                    }
                }
            }
            return ;
        }
        for(int i = 0 ; i < list.count();i ++){
            QFileInfo f = list.at(i);
            if(f.isDir()){
                qDebug() << f.absoluteFilePath();
                dealDir(f.absoluteFilePath());    //递归遍历
            }
        }
    }
    void Widget::deal()
    {
        dealDir(path);
    }

    4.AnalyJson(QString pa)的实现,并获取相关信息,如果获取成功则返回true。

    bool Widget::AnalyJson(QString pa)
    {
        QFile fileLoad(pa);//加载该该JSON文件
        if(!fileLoad.open(QIODevice::ReadOnly)){//判断是否打开成功
            qDebug() << "json is no ";
            return false;
        }
        QByteArray data = fileLoad.readAll();//得到当前文件所有内容
        fileLoad.close();                    //关闭文件
        QJsonParseError jsonError;           //用来判断是否解析JSON过程是否出错
        QJsonDocument jsonDoc(QJsonDocument::fromJson(data,&jsonError));//解析
        if(jsonError.error != QJsonParseError::NoError){
            qDebug() << "Json open error";
            return false;
        }
        //将解析出来的文档转化为对象格式
        QJsonObject obj = jsonDoc.object();
        QJsonObject page = obj.value("page_data").toObject();
        NameEntry = page.value("part").toString();    //得到文件名
        nameDir = obj.value("type_tag").toString();   //得到视频文件所在的文件夹
        if(!NameEntry.isEmpty() && !nameDir.isEmpty())
            return true;
        return false;
    }

    5.运行结果,成功得到视频

    6.总结,整体程序比较简单,先是找到entry.json文件进行解析得到视频文件名和视频所在的文件夹名,然后再在视频文件夹下找到视频文件,利用视频文件名和自定义的文件存放的路径为新的名字,对其进行重命名。代码比较啰嗦,没有好的容错率和可移植性。学习,共勉。

    展开全文
  • 在实际操作中,往往需要将文件夹中的文件名含有某个特定字符的文件批量提取或是处理,本文采用python编程实现这一功能。代码仅供参考,直接上代码: import os import shutil def select_files(dir, dir_out): s1...

    在实际操作中,往往需要将文件夹中的文件名含有某个特定字符的文件批量提取或是处理,本文采用python编程实现这一功能。代码仅供参考,直接上代码:

    import os
    import shutil
     
    def select_files(dir, dir_out):
        s1 = 'A'
        r1 = 'B'
        sd = 'C'
        newDir = dir 
        if os.path.isfile(dir):
            if(dir[-4:] == '.png' and ((s1 in dir) or (r1 in dir))):#提取文件夹dir中包含A或是B的格式为png的所有图像
            # if (dir[-4:] == '.bmp' and ((r1 in dir))):#提取文件夹dir中包含B的格式为bmp的所有图像
            # if (dir[-4:] == '.jpg' and (sd in dir)):#提取文件夹dir中包含C的格式为jpg的所有图像
                filename = dir.split('\\')[-3]
                filename += dir.split('\\')[-1]
                shutil.copy(dir, os.path.join(dir_out, filename)) #将提取的文件保存到dir_out文件夹中
    

    具体如何使用以上代码,可以在标注中更为直观的了解。

    展开全文
  • 该软件的功能是从一个文件夹提取指定扩展名的所有文件,范围包括各层子文件夹,并且将提取文件统一放一个新的文件夹内。
  • 需求:遍历子文件夹中的视频文件,每个视频文件每秒提取n张图片,保存新建的以视频名命名的文件夹 echo off & color 0A ::指定视频文件夹 set DIR="D:\video\" echo DIR=%DIR% :: 参数 /R 表示需要遍历子...

    需求:遍历子文件夹中的视频文件,每个视频文件每秒提取n张图片,保存到新建的以视频名命名的文件夹

    echo off & color 0A
    ::指定视频文件夹
    set DIR="D:\video\"
    echo DIR=%DIR%
    :: 参数 /R 表示需要遍历子文件夹,去掉表示不遍历子文件夹
    :: %%f 是一个变量,类似于迭代器,但是这个变量只能由一个字母组成,前面带上%%
    :: 括号中是通配符,可以指定后缀名,*.*表示所有文件
    :: %%~nxI,表示仅将 %I 扩充到一个文件名和扩展名,不包含路径)
    :: 第一层循环遍历所有子文件夹下的文件,第二层循环提取文件名(包含扩展名.xxx),第三层循环分割文件名和扩展名,提取文件名(不包含扩展名)
    
    for /R %DIR% %%x in (*.mp4) do (
        echo %%x
        set string=%%x
        for %%a in ("%%x") do (
            echo %%~nxa  
            for /f "tokens=1,* delims=." %%i in ("%%~nxa") do (
                echo %%i
                mkdir %%i
                ffmpeg -i %%x -filter:v "select=(gte(t\,1))*(isnan(prev_selected_t)+gte(t-prev_selected_t\,1))" -frames:v 25 -y "D:\%%i\image_%%05d.jpg"       
            )
        )
    )
    pause
    
    
    展开全文
  • 这款文件名批量提取器可帮助用户批量提取指定文件夹(包含子文件夹)下所有文件的文件名,同时意见保存桌面文本文件中,轻松获得文件名,快来下载体验吧。 使用说明 1、解压后打开软件,点击【浏览】按钮选择需要...
  • 以下都是一些简单的免费分享的工具 Gif动图合成工具 主要功能是扫描指定的文件夹里的所有...主要功能是将指定文件夹及子文件夹里所有文件,复制新的文件夹下,可以指定是否删除源文件。以下动图演示效果...
  • 删除当前文件夹下所有文件第一行。 其实提出两列很简单,不过我受够了每次一个文件执行一次的烦。想搞成别的程序调用时命令行参数直接就行。第一次知道sys.argv这玩意,学了。 我设置了 -i 输入,-o 输出 这两个...
  • 摘要:最近需要将一批PDF文件中的某些数据整理Excel中,因为文件数量接近20w+,手动更新几乎不现实,于是就提取关键词和内容动手写了个Python小工具,以实现...遍历文件夹,按照特定的要求找出指定类型的PDF文件...
  • 批量提取器-源码

    2021-02-14 21:16:28
    此存储库中的脚本可用于解析已下载的Google外卖ZIP文件(是的,您必须将其下拉至本地计算机),然后将其提取到指定的位置,然后将生成的文件夹移回onedrive,以便将照片上传到有用的格式 叹 我向ISP表示歉意,要求...
  • 用DOS命令批量提取文件名

    万次阅读 2016-11-17 17:38:25
    用DOS命令批量提取文件名 DOS命令保存为bat提取文件名 ...dir /a/b 指定目录路径 >输出目录路径\1.txt  ...如果输出路径为%ComputerName%.txt则命名为计算机名 ...文件名字被提取当前文件夹的1.txt里面了!也可以
  • Hello,我是小张,大家好久不见~ 今天文章介绍一个实战案例,与自动化办公相关;案例思想是源于前两天帮...正式案例讲解之前,先看一下转换效果,脚本先把指定文件夹下的 doc 文件转化为 docx ,随后自动生成一个 excel
  • 打开工具,切换第五个模块,文件批量复制模块(快捷键:Ctrl+5) 点击右边的“搜索添加”按钮,我这里就从我的PS文件夹里面找出全部的jpg图片叭,勾选两项,搜文件,并且搜全部子文件,然后点开始搜索按钮 搜索...
  • 文件搜索与提取批处理

    千次阅读 2020-06-28 15:15:15
    可用来批量提取文件名称并保存到文本文件 可用来将搜索得到的文件直接提取到指定文件夹 批处理代码 @echo off setlocal enabledelayedexpansion echo ******************************* echo *
  • 批量修改文件名称的方法

    千次阅读 2017-04-05 15:01:50
    2,在excel中按照指定格式替换加工获取文件名称,(Left,right,mid等提取字符串公式)以及&等字符连接公式。3,使用rename 命令对文件夹中的文件进行命名。 处理方法: 1,获取文件夹下面所有文件的名称。...
  • 本软件提供了45大类共几百种针对txt文本...42.批量提取文本文件中特定内容或数据并保存 43.找出两个txt文档中内容相同的部分并提取出来顺序保存 44.批量随机位置随机插入内容 45.剔除列表文件中重复数据 ……………
  • 提取文件名称写入文本文件 1 打开需要更名的文件夹 2 选择需要更名的文件类型 3 选择需要更名的文件,ctrl+A 全选 ctrl+单击 多选 shift+单击 连选 4 执行提取文件基本名 5 执行将文件名保存为文本文件 ...
  • 本软件提供了45大类共几百种针对txt文本文件的全文或者...42.批量提取文本文件中特定内容或数据并保存 43.找出两个txt文档中内容相同的部分并提取出来顺序保存 44.批量随机位置随机插入内容 45.剔除列表文件中重复数据
  • 1、一款可将指定文件夹下的所有文件信息提取到EXCEL中的插件 可选择生成超连接来方便管理。 您可以指定要提取文件类型,或指定扩展名。 您还可以设置文件名关键字作为提取条件。 2、对文件进行批量性的 复制,...
  • 提取文件名称写入文本文件 1 打开需要更名的文件夹 2 选择需要更名的文件类型 3 选择需要更名的文件,ctrl+A 全选 ctrl+单击 多选 shift+单击 连选 4 执行提取文件基本名 5 执行将文件名保存为文本文件
  • VB源码,文件操作,文件提取 一款可以帮助VB开发者创建安装程序的文件提取工具,通过这个工具可以分析VB6的工程文件,并列出所有支撑的文件,并分析出OCXs, DLLs, TLBs文件的结构内容复制一个指定文件夹中,方便...
  • Fly.Box 企业网盘发布,支持断点续传、文件大小无限制、分享、提取码、文件收集、多单位、多用户等,可集成第三方信息系统,是FTP,资源库的完美替代品。 #Fly.Box 2.0.2 更新: 1. 增加功能:打包上传、在线解压...
  • Fly.Box 1.9.2企业网盘发布,支持断点续传、文件大小无限制、分享、提取码、文件收集、多单位、多用户等,可集成第三方信息系统,是FTP,资源库的完美替代品。 Fly.Box 2.0 更新: 1. 增加功能:通知公告 2. ...
  • Fly.Box 1.9.2企业网盘发布,支持断点续传、文件大小无限制、分享、提取码、文件收集、多单位、多用户等,可集成第三方信息系统,是FTP,资源库的完美替代品。 Fly.Box 2.0 更新: 1. 增加功能:通知公告 2. ...
  • 批量检测url存活脚本

    2020-10-14 10:13:52
    思路是先读取文件里面的url,然后通过requests模块去访问它,最后提取访问正常的url下载到指定文件夹 import requests with open(r'C:\Users\惠普\Desktop\1111\链接.txt','r',encoding = 'utf-8') as f: u = f....
  • 有个服务程序定时扫描指定文件夹下一个所有文件文件包含了多个用户(客户)信息及对应的http发送地址和发送数据。现在该服务程序需要提取这些用户信息,然后批量进行发送;发送完后需要将http返回结果和当前用户对应...
  • VB实现对DLL/OCX控件的提取功能,分析出OCXs, DLLs, TLBs文件的结构内容复制一个指定文件夹中,方便您制作安装程序时用。 同时它还有一些设置选项:比如改变支撑文件名、批量自动重命名、分析完毕自动打开支撑...
  • 从MP3文件详细信息中提取出标题,歌手,专辑信息,用标题重命名MP3文件,用歌手和专辑对文件进行"歌手/专辑"分组 整体思路 1.遍历文件夹下的文件 2.针对每个文件,通过win32com的组件,使用windows功能读取文件的...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 192
精华内容 76
关键字:

批量提取文件到指定文件夹