根据输入的文件夹名称和两个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

相关文章

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql

批量导入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下载包及其所有依赖到指定文件夹,请按照以