python将一个txt文档中各种文件按照扩展名进行分类

需要将一个txt文件的很多条文件名按照路径进行一下分类,数目较少,手动就可以,数目多且类别多的情况下,则不适用,这里使用python代码来分类。
自建了一个用于测试的txt文档,里面有一些文件的路径:
在这里插入图片描述
读取文件数量:

import os
path='D:/Python_Program/test/test.txt'
with open(path) as ff:
    tmp = ff.readlines()
print("一共含有{}个文件".format(len(tmp)))
一共含有55个文件

分类并写入新的文件:

# 根据扩展名分类并写入文件中
outpath='D:/Python_Program/test/output'
print("一共含有{}个元素".format(len(tmp)))
for x in tmp:
    xx=x.strip()  # 去掉每一行后面的回车,否则后面会出错
    filepath,filename=os.path.split(xx)
    print(filepath,'-------',filename)
    houzhui=filename.split(".") #判断是否有后缀

    if len(houzhui)==1:  #没有后缀的文件名放入一个文件
        print("没有后缀:",filename)
        with open(os.path.join(outpath,'binda.txt'),'a+') as fw:
            fw.write(x)
            print("写入文件binda.txt   -----")

    else: # 有后缀的时候根据后缀名分类
        zi = []
        houzhuiming = filename.split(".")[-1] # 获取文件扩展名
        if houzhuiming not in zi: # 如果扩展名没有出现过
            # zi.append(houzhuiming)
            print("houzhuiming:",houzhuiming)

            ffname = houzhuiming + ".txt"

            with open(os.path.join(outpath,ffname),'a+') as fw:
                print("写入文件{}".format(ffname),"-----")
                fw.write(x)
        else:  #如果扩展名出现过,则放入相应类别
            ffname = houzhuiming + ".txt"
            with open(os.path.join(outpath, ffname), 'a+') as fw:
                print("写入文件{}".format(ffname),"-----")
                fw.write(x)


在指定的文件夹下就会有相应的文件:
在这里插入图片描述

然后测试一下:

# 测试用,检查分类后的文件数是否和分类前相同
outpath='D:/Python_Program/test/output'
files=os.listdir(outpath)
allfile=[]
for fi in files:
    with open(os.path.join(outpath,fi)) as ff:
        tmp=ff.readlines()
        allfile+=tmp
print("分类后含有{}个文件".format(len(allfile)))
分类后含有50个文件

写入新文件的时候需要注意,不能用’w’,因为’w’会被覆盖掉,这里验证一下:
在这里插入图片描述

# 根据扩展名分类并写入文件中
outpath='D:/Python_Program/test/output'
print("一共含有{}个元素".format(len(tmp)))
for x in tmp:
    xx=x.strip()  # 去掉每一行后面的回车,否则后面会出错
    filepath,filename=os.path.split(xx)
    print(filepath,'-------',filename)
    houzhui=filename.split(".") #判断是否有后缀

    if len(houzhui)==1:  #没有后缀的文件名放入一个文件
        print("没有后缀:",filename)
        with open(os.path.join(outpath,'binda.txt'),'w') as fw:
            fw.write(x)
            print("写入文件binda.txt   -----")

    else: # 有后缀的时候根据后缀名分类
        zi = []
        houzhuiming = filename.split(".")[-1] # 获取文件扩展名
        if houzhuiming not in zi: # 如果扩展名没有出现过
            # zi.append(houzhuiming)
            print("houzhuiming:",houzhuiming)

            ffname = houzhuiming + ".txt"

            with open(os.path.join(outpath,ffname),'w') as fw:
                print("写入文件{}".format(ffname),"-----")
                fw.write(x)
        else:  #如果扩展名出现过,则放入相应类别
            ffname = houzhuiming + ".txt"
            with open(os.path.join(outpath, ffname), 'w') as fw:
                print("写入文件{}".format(ffname),"-----")
                fw.write(x)


# 测试用,检查分类后的文件数是否和分类前相同
outpath='D:/Python_Program/test/output'
files=os.listdir(outpath)
allfile=[]
for fi in files:
    with open(os.path.join(outpath,fi)) as ff:
        tmp=ff.readlines()
        allfile+=tmp
print("分类后含有{}个文件".format(len(allfile)))
分类后含有8个文件

猜你喜欢

转载自blog.csdn.net/liulanba/article/details/110870879
今日推荐