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

相关文章

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. 拖拽路径

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.