根据输入的文件夹名称和两个txt文件名和输入的比例,将文件夹中的某类文件按比例输入到两个文件中

2024-03-19 22:08

本文主要是介绍根据输入的文件夹名称和两个txt文件名和输入的比例,将文件夹中的某类文件按比例输入到两个文件中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前不久在学习过程中遇到一学生问我这样一个问题,如下:

描述:
    在工作过程中,我们有一个图片文件夹以及标签文件夹,我们需要使用标签文件夹生成两个txt文件,txt文件中存放的是被打乱后的标签文件的文件名(不包括后缀),两个txt中的文件名的数量按照一定比例来,要保证两个文件中的文件名数量和是标签文件夹中文件的数量。
输入:
    标签文件夹名,两个txt名称,其中一个txt所含文件名数量的比例;
输出两个txt文件

然后我根据要求,写下了如下的代码

#encoding:utf-8

import os
import time
import sys
import argparse


#我们可以使用多参数输入函数

def parse_args():
    parser = argparse.ArgumentParser(description='获得xml文件夹名称,和两个xml文件,以及第一个xml文件所含文件名的比例')
    parser.add_argument('--path', dest='path', type=str,help='xml文件夹')
    parser.add_argument('--txtone',dest='txt1',type=str,help='第一个xml文件名')
    parser.add_argument('--txttwo',dest='txt2',type=str,help='第二个xml文件名')
    parser.add_argument('--scale', dest='scale',type=float,help='比例')

    if len(sys.argv) == 1:
        parser.print_help()
        sys.exit(1)
    args = parser.parse_args()

    return args

#这个小函数只是实现计数功能,方便之后的按比例写入文件中


def countfileName():
    filename_list=os.listdir(args.path)
    counter=0
    #可以同过简单后缀名判断,筛选出你所需要的文件类型

    for filename in filename_list:#依次读入列表中的内容

        if filename[-4:]=='.xml':#将读取文件名字的后三个字符与'xml'匹对    
        counter+=1
    return counter

def getFileName(path):
    a=0
    # 获取指定目录下的所有指定后缀的文件名
    f_list = os.listdir(path)
    document1=open(args.txt1, "w+");
    document2=open(args.txt2, "w+");
    for i in f_list:
       #os.path.splitext():分离文件名与扩展名
        if os.path.splitext(i)[1] == '.xml':
            a+=1        
            if a<=(int)(args.scale*filesum):
            document1.write(i[:-4]+'\n');
        #删除.xml文件后缀名
            else :
            document2.write(i[:-4]+'\n');
    document2.close();
    document1.close();

if __name__ == '__main__':
        args = parse_args()
        print('Called with args:')
        print(args)
        start = time.time()
        filesum = countfileName()
        print (int)((args.scale)*filesum)
        getFileName(args.path)
        print "Done"
    c = time.time() - start

    print('程序运行耗时:%0.2f'%(c)) 


简单写了一下,并没有优化,看着代码有些冗余,你们可以选择性优化代码

这篇关于根据输入的文件夹名称和两个txt文件名和输入的比例,将文件夹中的某类文件按比例输入到两个文件中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827376

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径