栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python将不同类型文件分开

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python将不同类型文件分开

1. one2two

将目标文件夹下的文件分开保存到不同文件夹下,(例:区分jpg文件和png文件)。其他类型的文件也类似。多个文件类型也可以自己修改。

import os
import shutil

def split_file(src, dst1, dst2):
    '''
    function: 将文件中不同后缀的文件分开到不同文件夹
    example: 区分jpg和png图像
    src:str(filefolder)
    dst:str(filefolder)
    '''
    #区分jpg和json
    jpg = []
    json = []
    for f in os.listdir(src):
        if f.endswith('.png'):
            jpg.append(f)
        elif f.endswith('.jpg'):
            json.append(f)
    
    # 创建目标文件夹
    if not os.path.isdir(dst1):
        os.mkdir(dst1)
    if not os.path.isdir(dst2):
        os.mkdir(dst2)
    
    # 拷贝文件到目标文件夹
    for j in jpg:
        _jpg = os.path.join(src, j)
        shutil.copy(_jpg, dst1)
    for p in json:
        _png = os.path.join(src, p)
        shutil.copy(_png, dst2)


if __name__ == '__main__':
    base_filename = r'F:python_DemoDeepLearningtools312'
    src = os.path.join(base_filename, 'images')
    dst1 = os.path.join(base_filename, 'png')
    dst2 = os.path.join(base_filename, 'jpg')
    split_file(src, dst1, dst2)

2. one2two_v2

针对 CL-CMU-CD中的CD_train数据集,遍历获取两个对应的RGB图像分别保存到两个文件夹,遍历获取GT图像保存到一个文件夹,并都进行重命名。

后面附有文件目录。

import os
import shutil

# 查看根目录下包括的路径、文件夹、文件 os.walk()
def getpath(path):
    pathlist=[]
    FileList=os.listdir(path)
    print(FileList)
    for root, dirs, files in os.walk(path):
        # print(root)
        # print(dirs)
        # print(files)
        for dir in dirs:
            #####################################################################
            if dir=='RGB':  # 选择RGB文件夹  使用split_file(src, dst1, dst2)时,用这个
            # if dir=='GT':     # 选择GT文件夹  使用getGT(src, dst3)时,用这个
            ######################################################################
                src=os.path.join(root,dir)
                # print(dir)
                # print(src)
                pathlist.append(src)
    print(pathlist)
    return pathlist


# 区分不同数字开头的jpg图像,并保存  如:1_00.jpg  2_00.jpg
def split_file(src, dst1, dst2):
    jpg1 = []  # 原始文件名
    jpg1_rename = []  # 改名后的文件名
    jpg2 = []
    jpg2_rename = []
    for f in os.listdir(src):
        x=src.split('\')[-2]  # 切取部分文件夹名(000,001,……),用于重命名
        if f.endswith('.jpg'):
            info = f.split('_')
            before=info[0]
            last=info[1]
            if before == '1':
                jpg1.append(f)
                f = before + '_' + x + '_' + last
                jpg1_rename.append(f)

            if before == '2':
                jpg2.append(f)
                f = before + '_' + x + '_' + last
                jpg2_rename.append(f)

    # print(jpg1)
    # print(jpg2)
    # print(jpg1_rename)
    # print(jpg2_rename)

    # 创建目标文件夹
    if not os.path.isdir(dst1):
        os.mkdir(dst1)
    if not os.path.isdir(dst2):
        os.mkdir(dst2)

    # 拷贝文件到目标文件夹,并在目标文件夹重命名文件
    for j1, j2 in zip(jpg1, jpg1_rename):
        src_j1 = os.path.join(src, j1)
        shutil.copy(src_j1, dst1)
        dst1_j1 = os.path.join(dst1, j1)
        dst1_rename = os.path.join(dst1, j2)
        print(dst1_j1)
        print(dst1_rename)
        os.rename(dst1_j1, dst1_rename)

    for j1, j2 in zip(jpg2, jpg2_rename):
        src_j1 = os.path.join(src, j1)
        shutil.copy(src_j1, dst2)
        dst2_j1 = os.path.join(dst2, j1)
        dst2_rename = os.path.join(dst2, j2)
        os.rename(dst2_j1, dst2_rename)


# 获取GT图像,并保存
def getGT(src,dst3):
    gt1 = []  # 原始文件名
    gt1_rename = []  # 改名后的文件名

    for f in os.listdir(src):
        x = src.split('\')[-2]  # 切取部分文件夹名(000,001,……),用于重命名
        if f.endswith('.png'):
            info = f.split('t')
            last = info[1]
            gt1.append(f)
            f = 'gt_' + x + '_' + last
            gt1_rename.append(f)

    print(gt1)
    print(gt1_rename)

    # 创建目标文件夹
    if not os.path.isdir(dst3):
        os.mkdir(dst3)

    # 拷贝文件到目标文件夹,并在目标文件夹重命名文件
    for g1, g2 in zip(gt1, gt1_rename):
        src_g1 = os.path.join(src, g1)
        shutil.copy(src_g1, dst3)
        dst3_g1 = os.path.join(dst3, g1)
        dst3_rename = os.path.join(dst3, g2)
        print(dst3_g1)
        print(dst3_rename)
        os.rename(dst3_g1, dst3_rename)



if __name__ == '__main__':
    base_filename = 'F:/python_Demo/DeepLearning/tools3'

    src_root = os.path.join(base_filename, 'CD_train01')
    srcs = getpath(src_root)
    for src in srcs:
        print(src)
        dst1 = os.path.join(base_filename, 'image01')
        dst2 = os.path.join(base_filename, 'image02')
        dst3 = os.path.join(base_filename, 'label')

        # (1):将多个文件夹中的RGB文件夹里的图像复制,并按照首字母分类(‘1’或‘2’),
        # 分别保存到两个新建的文件夹中,并重命名
        split_file(src, dst1, dst2)

        # (2):将多个文件夹中的GT文件夹里的图像复制,保存到新建文件夹中,并重命名
        # getGT(src, dst3)

目录结构:

 生成文件结构:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740695.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号