本文主要是介绍根据输入的文件夹名称和两个txt文件名和输入的比例,将文件夹中的某类文件按比例输入到两个文件中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前不久在学习过程中遇到一学生问我这样一个问题,如下:
描述:
在工作过程中,我们有一个图片文件夹以及标签文件夹,我们需要使用标签文件夹生成两个txt文件,txt文件中存放的是被打乱后的标签文件的文件名(不包括后缀),两个txt中的文件名的数量按照一定比例来,要保证两个文件中的文件名数量和是标签文件夹中文件的数量。
输入:
标签文件夹名,两个txt名称,其中一个txt所含文件名数量的比例;
输出两个txt文件
然后我根据要求,写下了如下的代码
#encoding:utf-8
import osimport time
import sys
import argparse
#我们可以使用多参数输入函数
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文件名和输入的比例,将文件夹中的某类文件按比例输入到两个文件中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!