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

相关文章

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Linux文件名修改方法大全

《Linux文件名修改方法大全》在Linux系统中,文件名修改是一个常见且重要的操作,文件名修改可以更好地管理文件和文件夹,使其更具可读性和有序性,本文将介绍三种在Linux系统下常用的文件名修改方法... 目录一、引言二、使用mv命令修改文件名三、使用rename命令修改文件名四、mv命令和rename命

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相