精华内容
下载资源
问答
  • 如何用python将两个文件夹合并至另一个文件夹(制作数据集) 此操作目的是为了制作自己的数据集,深度学习框架进行数据准备,此操作步骤包括对文件夹进行操作,将两个文件夹合并至另一个文件夹 该实例为一个煤矿...

    如何用python将两个文件夹合并至另一个文件夹(制作数据集)

    此操作目的是为了制作自己的数据集,深度学习框架进行数据准备,此操作步骤包括对文件夹进行操作,将两个文件夹合并至另一个文件夹

    该实例为一个煤矿工人脸识别的案例;首先原始数据集(简化版的数据集旨在说明数据准备过程)如下图所示:
    在这里插入图片描述
    该数据集只有三个人的数据,A01代表工人甲的煤矿下的照片,B01代表工人甲下矿前的照片,同理A02、B02代表工人乙的矿下、矿上的照片数据。。。如下图所示

    矿下

    在这里插入图片描述

    矿上

    开始制作数据集:

    • 首先建立训练集(0.7)和测试集(0.3),即建立一个空白文件夹

    在这里插入图片描述
    将该文件夹分为四个小文件夹(空),train代表训练集,val代表测试集,valb代表矿井下的测试集,vall代表矿井上的测试集,
    注:后边两个测试集可有可无

    最终制作的数据集如下所示:
    在这里插入图片描述
    在这里插入图片描述

    下面为所有的程序详解

    #导入一些进行该操作需要的库
    import numpy as np
    import os
    import random
    import shutil
    
    path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore'#原始数据集的路径
    data=os.listdir(path)
    #listdir该操作([添加链接描述](https://blog.csdn.net/weixin_40123108/article/details/83340744))在我的上篇博客中有所介绍,此操作能读取的内容为A01、A02、A03、B01、B02、B03这些文件夹
    #print(data)
    
    root=path#复制原始数据路径path
    

    读取文件夹 A01、A02、A03、存入c列表中B01、B02、B03,将其存入d列表中

    c=[]
    d=[]#创建两个空列表
    for i in range(len(data)):
        a=data[i][0]
        if (a=='A'):
            c.append(data[i])
        else:
            d.append(data[i])
    #print(d)
    

    在这里插入图片描述

    导入路径四个空文件夹的路径

    train_root='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\train'
    val_root='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\val'
    vall_root='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\valb'
    valb_root='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\vall'
    
    
    for i in range(len(c)):
        qqq=os.path.exists(train_root+'/'+c[i][1:])
        if (not qqq):
            os.mkdir(train_root+'/'+c[i][1:])
            qq=os.path.exists(val_root+'/'+c[i][1:])
            if (not qq):
                os.mkdir(val_root+'/'+c[i][1:])
                qq=os.path.exists(vall_root+'/'+c[i][1:])
                if (not qq):
                    os.mkdir(vall_root+'/'+c[i][1:])
                    qq=os.path.exists(valb_root+'/'+c[i][1:])
                    if (not qq):
                        os.mkdir(valb_root+'/'+c[i][1:])
    #f=[]
    #g=[]
    aq='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\rx\\ore\\'
    train_root1='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\train\\'
    val_root1='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\val\\'
    vall_root1='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\valb\\'
    valb_root1='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\myself\\vall\\'
    for i in range(len(c)):
        a=c[i]
        data_0=os.listdir(aq+a)
    #    f.append(data_0)
    #    g.append(aq+a)
    #print(f)
    #print(g)   
        random.shuffle(data_0)#打乱A中数据
        for j in range(len(d)):
            b=d[j]
            if(a[1:]==b[1:]):
                data_1=os.listdir(aq+b)
                #print(aq+b);
                random.shuffle(data_1)
                #print(data_1)
                #print(data_0,data_1)
                for z in range(len(data_0)):
                    #print(z)
                    pic_path=aq+a+'/'+data_0[z]
                    
                    if z<int(len(data_0)*0.7):
                        obj_path=train_root1+a[1:]+'/'+data_0[z]
                        
                    else:
                        obj_path=val_root1+a[1:]+'/'+data_0[z]
                        obl_path=vall_root1+a[1:]+'/'+data_0[z]
                        shutil.copyfile(pic_path,obl_path)
                #print(len(data_0),len(data_0)*0.7)
                    #if (os.path.exists(pic_path)):
                    shutil.copyfile(pic_path,obj_path)
                for z in range(len(data_1)):
                    pic_path=aq+b+'/'+data_1[z]
                    if z<int(len(data_1)*0.7):
                        obj_path=train_root1+b[1:]+'/'+data_1[z]
                        
                    else:
                        obj_path=val_root1+b[1:]+'/'+data_1[z]
                        obl_path=valb_root1+a[1:]+'/'+data_1[z]
                        shutil.copyfile(pic_path,obl_path)
                    #if (os.path.exists(pic_path)):
                    shutil.copyfile(pic_path,obj_path)#shutil.copyfile( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
    

    将数据送入pytorch中,对数据进行迭代

    from __future__ import print_function, division
    import torch
    import torch.nn as nn
    import torch.optim as optim
    from torch.optim import lr_scheduler
    import numpy as np
    import torchvision
    from torchvision import datasets, models, transforms
    import matplotlib.pyplot as plt
    import time
    import os
    import copy
    import math
    import torch.nn.functional as F
    
    D=299
    
    data_transforms = {
        'train': transforms.Compose([
    #        transforms.RandomResizedCrop(D),
            transforms.Resize(D),
            transforms.RandomCrop(D),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ]),
        'val': transforms.Compose([
            transforms.Resize(D),
            transforms.CenterCrop(D),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ]),
    }
    
    data_dir = r'C:\Users\Administrator.SKY-20180518VHY\Desktop\myself'
    image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
                                              data_transforms[x])
                      for x in ['train', 'val']}
    dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=200,
                                                 shuffle=True, num_workers=4)
                  for x in ['train', 'val']}
    dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}
    class_names = image_datasets['train'].classes
    
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    #print(image_datasets['train'][0])
    img, label = image_datasets['val'][11] 
    print(label)#输出为2即第三类
    
    展开全文
  • python合并两个文件夹

    千次阅读 2018-07-27 09:30:02
    7 # 合并两个目录/文件夹。 8 # 目录A合并到目录B,同级目录下, 9 # A中有,B中没有的目录完全复制到B中; 10 # A中没有,B中有的目录不做改动; 11 # A中做了修改的文件,在B的同级目录下创建一个...
    # 作用:
      7 #   合并并两个目录/文件夹。
      8 #   将目录A合并到目录B,同级目录下,
      9 #   将A中有,B中没有的目录完全复制到B中;
     10 #   将A中没有,B中有的目录不做改动;
     11 #   将A中做了修改的文件,在B的同级目录下创建一个副本。(注意不是覆盖)
     12 #
     13 # 适应场景:
     14 #   一般A是从B复制过来的文件夹,做了修改后,想合并回B。
     15 #   这样在A中做的一些改动我们就不知道了,这个程序的作用是,
     16 #   将A中修改的部分在B中更新。
     17 #
     18 # 版本:
     19 #   将修改后的文件完全复制过去
     20 #   旧的文件创建副本
     21 #   基于文件的MD5值判断是否修改过
     22 #
     23 
     24 import os
     25 import shutil
     26 import time
     27 import hashlib
     28 import sys
     29 
     30 def Help():     # 输出帮助文档
     31   print """  
     32 PathMerge.py
     33 作者:freecode
     34 创建时间:2016.4.9 20:15
     35 作用:
     36     合并并两个目录/文件夹。
     37     将目录A合并到目录B,同级目录下,
     38     将A中有,B中没有的目录完全复制到B中;
     39     将A中没有,B中有的目录不做改动;
     40     将A中做了修改的文件,在B的同级目录下创建一个副本。(注意不是覆盖)
     41 
     42 适应场景:
     43     一般A是从B复制过来的文件夹,做了修改后,想合并回B。
     44     这样在A中做的一些改动我们就不知道了,这个程序的作用是,
     45     将A中修改的部分在B中更新。
     46 
     47 版本:
     48     将修改后的文件完全复制过去
     49     旧的文件创建副本
     50     基于文件的MD5值判断是否修改过
     51 """
     52 
     53 def GetFileMd5(filename):       # 计算文件的md5值
     54     if not os.path.isfile(filename):
     55         return
     56     myhash = hashlib.md5()
     57     f = file(filename,'rb')
     58     while True:
     59         b = f.read(8096)
     60         if not b :
     61             break
     62         myhash.update(b)
     63     f.close()
     64     return myhash.hexdigest()
     65 
     66 def isModify(A_file,B_file):        # 判断两个文件是否相同,如果不同,表示修改过
     67     # 参数需是绝对路径
     68     return  GetFileMd5(A_file) != GetFileMd5(B_file)
     69 
     70 def Stamp2Time(Stamp):      # 将时间戳转换成时间显示格式
     71     timeArray = time.localtime(Stamp)
     72     Time = time.strftime("%Y年%m月%d日 %H时%M分%S秒 旧文件副本", timeArray)
     73     return Time
     74 
     75 def Merge(A_path,B_path):       # 合并两个目录
     76     B_paths = os.listdir(B_path)    # 获取当前B中的目录结构
     77     for fp in os.listdir(A_path):   # 遍历当前A目录中的文件或文件夹
     78         A_new_path = os.path.join(A_path,fp)    # A中的文件或目录
     79         B_new_path = os.path.join(B_path,fp)    # B中对应的文件或路径,不一定存在
     80 
     81         if os.path.isdir(A_new_path):           # A中的目录
     82             if os.path.exists(B_new_path):      # 如果在B中存在
     83                 Merge(A_new_path,B_new_path)    # 继续合并下一级目录
     84             else:   # 如果在B中不存在
     85                 print '[目录]\t%s ===> %s' %(A_new_path,B_new_path)
     86                 shutil.copytree(A_new_path,B_new_path)   # 完全复制目录到B
     87                 
     88         elif os.path.isfile(A_new_path):        # A中的文件
     89             if os.path.exists(B_new_path):      # 如果在B中存在
     90                 s = os.stat(B_new_path)
     91                 if isModify(A_new_path,B_new_path) == True:  # 如果该文件修改过
     92                     # 创建副本
     93                     suffix = B_new_path.split('.')[-1]  # 得到文件的后缀名
     94                     # 将B中原文件创建副本
     95                     B_copy_path = B_new_path[:-len(suffix)-1]+"(%s)."%(Stamp2Time(s.st_mtime))+suffix
     96                     print '[副本]\t%s ===> %s' %(A_new_path,B_copy_path)
     97                     shutil.copy2(B_new_path,B_copy_path)
     98                     # 将A中修改后文件复制过来
     99                     print '[文件]\t%s ===> %s' %(A_new_path,B_new_path)
    100                     shutil.copy2(A_new_path,B_new_path)
    101                 else:  # 如果该文件没有修改过
    102                     pass    # 不复制
    103                 
    104             else:   # 如果在B中不存在
    105                 # 将该文件复制过去
    106                 print '[文件]\t%s ===> %s' %(A_new_path,B_new_path)
    107                 shutil.copy2(A_new_path,B_new_path)
    108 
    109 # 运行模式
    110 if __name__=='__main__':
    111     print """
    112         欢迎使用PathMerge!
    113         本程序将会把目录A合并到目录B,即 A ===> B
    114         将A目录中修改的内容在B目录中更新
    115         合并规则具体见 PathMerge.Help()
    116         """
    117     if len(sys.argv) == 1:
    118         path1 = raw_input('请输入A目录:').strip()
    119         path2 = raw_input('请输入B目录:').strip()
    120     elif len(sys.argv) == 2:
    121         path1 = sys.argv[1].strip()
    122         print 'A目录为:%s\n' % (path1)
    123         path2 = raw_input('请输入B目录:').strip()
    124     elif len(sys.argv) == 3:
    125         path1 = sys.argv[1].strip()
    126         print 'A目录为:%s\n' % (path1)
    127         path2 = sys.argv[2].strip()
    128         print 'B目录为:%s\n' % (path2)
    129     else:
    130         print 'ERROR:参数错误!\n参数最多有三个!\n'
    131         raw_input('\n请按回车键(Enter)退出……')
    132         sys.exit(0)
    133     # 去除目录的引号
    134     if path1[0]=='\"':
    135       path1 = path1[1:-1]
    136     if path2[0]=='\"':
    137       path2 = path2[1:-1]
    138 
    139     print """
    140 开始合并目录 %s
    141    到目录 %s
    142 %s ===> %s
    143 """ %(path1,path2,path1,path2)
    144 
    145     try:
    146         print '合并中……'
    147         Merge(path1,path2)
    148         print ''
    149     except Exception,e:
    150         print '合并失败!'
    151         print '失败原因:\n',e
    152     else:
    153         print '合并成功!'
    154 
    155     raw_input('\n请按回车键(Enter)退出……')
    156     

     

    展开全文
  • 将两个文件夹中文件名相同的文本文件进行按顺序合并
  • 个文件夹里面有多个子文件夹,每个子文件夹下面又有多个文件。 需求是要把所有子文件夹里面的文件合并到新的文件夹。 实现代码: import os import shutil source_path = os.path.abspath(r'D:\netbian\风景')...

    文件夹【风景】里面有100多个子文件夹,每个子文件夹下面又有20多张图片。
    在这里插入图片描述
    在这里插入图片描述
    需求是要把所有子文件夹里面的图片合并到新的文件夹。
    在这里插入图片描述
    实现代码:

    import os
    import shutil
    
    source_path = os.path.abspath(r'D:\netbian\风景')     #源文件夹
    target_path = os.path.abspath(r'D:\netbian\all')    #目标文件夹
    
    if not os.path.exists(target_path):     #目标文件夹不存在就新建
        os.makedirs(target_path)
    
    if os.path.exists(source_path):     #源文件夹存在才执行    
        # root 所指的是当前正在遍历的这个文件夹的本身的地址
        # dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)
        # files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录)
        
        for root, dirs, files in os.walk(source_path):
            for file in files:
                src_file = os.path.join(root, file)
                shutil.copy(src_file, target_path)
                print(src_file)
    
    print('复制完成')
    
    

    在这里插入图片描述

    展开全文
  • 将两个黑框中的文件合并到统一的文件夹中。将两个黑框中的system合并,user合并,然后将合并的后的sys和user在合并一次最终形成右图结构。 import os import shutil def CreateDir(path): isExists=os.path....

    将两个黑框中的文件合并到统一的文件夹中。将两个黑框中的system合并,user合并,然后将合并的后的sys和user在合并一次最终形成右图结构。

    import os
    import shutil
    
    def CreateDir(path):
        isExists=os.path.exists(path)
        # 判断结果
        if not isExists:
            # 如果不存在则创建目录
            os.makedirs(path) 
            print(path+' 目录创建成功')
        else:
            # 如果目录存在则不创建,并提示目录已存在
            print(path+' 目录已存在')
    
    
    def CopyFile(filepath, newPath):
        # 获取当前路径下的文件名,返回List
        fileNames = os.listdir(filepath) 
        for file in fileNames:
            # 将文件命加入到当前文件路径后面
            newDir = filepath + '/' + file 
            # 如果是文件
            if os.path.isfile(newDir):  
                print(newDir)
                print(newPath)
                newFile = newPath +'/'+ file
    			#copyfile函数两个必须为文件,不能是目录,
                shutil.copyfile(newDir, newFile)
            #如果不是文件,递归这个文件夹的路径            
            else:
                CopyFile(newDir,newPath)                
    
    if __name__ == "__main__":
        #path = input("输入需要复制文件目录:")
        # 获取sys当前的目录
        patha="H:/XX/images/thumbnail"
        #遍历当前文件夹
        fileNames = os.listdir(patha)
        for file in fileNames:
            # 将文件命加入到当前文件路径后面
            newDir = "H:\XX\image262" + '/' + file 
            os.makedirs(newDir) 
            
            
        for file in fileNames:
            CopyFile(patha+'/' + file+'/system' ,"H:/XX/image262"+"/"+file)
            CopyFile(patha+'/' + file+'/user' ,"H:/XX/image262"+"/"+file)
        
        

    首先创建新的目录结构,新创建的目录就是根据现有总的目录创建出上面右图中的目录结构,遍历一次即可

    然后在此遍历,将system和user目录作为初始目录,新创建的目录作为目标目录作为参数传递到CopyFile方法中。

    最后,在copyFile方法中遍历system文件夹下的文件,将该文件夹下的文件复制到新创建的路径中,如果system目录下还有文件夹,则进行迭代循环。

    展开全文
  • 合并两个文件夹内的所有图片cp -r imgs_1/* imgs_2 找了很久才知道 cp -r imgs_1/* imgs_2 必须加上 /* 才会合并文件夹中的内容,而不是单纯把文件夹imgs_1放到文件夹imgs_2下面,图片在/imgs_2//imgs_1中
  • linux下合并两个文件夹

    千次阅读 2016-01-14 15:30:00
    如何和现有的/usr/local/share文件夹合并起来,原来的文件还在? (1)下面是解压出的自定义的bashdb调试软件==&gt; (2)和现有的man文档整合起来,用小r测试文件递归copy并没有生效,建议用大R 参考==&gt;...
  • cp -rap [src] [dst] 转载于:https://www.cnblogs.com/haiyang21/p/9043055.html
  • 如何个文件夹中的文件合并到一个文件夹中 2011-11-27 这个算是小小的技巧吧!有种方法,一种是传统的命令行,另一种是用搜索。 1.问:我下载了一个书籍的压缩包,可是有许多文件夹,但每个文件夹只有一...
  • linux下合并文件夹

    万次阅读 2016-07-03 01:49:30
    在window下,如果直接一个文件夹拷贝到另外一个包含同名文件夹的位置,可以选择将两个文件夹合并。 那么,linux下的mv命令是否有同样的功能呢?可以同名文件夹合并呢? 答案是否定的。 但是,有其他命令可以...
  • #需要合并文件夹路径 filePath = 'D:/pythonProject/new_lingying/info_500' wordpath ='D:/pythonProject/new_lingying/photo_500' #将文件夹路径定义成变量 path1='D:/pythonProject/new_lingying/info_500\\' ...
  • 目录下有两个文件夹170103、170123,里面包含的文件名相同, 需要把这些文件合并,生成新的文件在本目录 shell代码 a=170103 #文件夹a b=170123 #文件夹b for i in `ls $a` do echo $i cat $a/$i $b/$i &gt;...
  • 在需要合并的文件夹路径下新建一个文件夹和txt文件,均命名为all 打开all.txt,输入如下内容: for /f “delims=” %%p in (‘dir /b/ad’) do copy %%p*.* d:\txt\all\ pause 然后保存该文件 重命名all.txt文件为...
  • 合并文件夹

    热门讨论 2017-05-22 17:38:43
    背景需要按照一定规则合并大量文件夹 这些文件夹是按照命名分类的 这些文件夹的命名存在一定规律,比如A_001_005,A_004-010,需要把连续的文件夹合并需求...该三个文件夹合并为一个文件夹: 规则二: 两个
  • 将两个文件夹中所有的文件合并成一个表格,以便进行后续的数据分析 反思 因为是不同的文件格式,只能文件分成两个文件夹,分两次遍历文件。 步骤 a:先遍历excel2020文件夹所有的文件,合并一个csv表至2019文件夹 ...
  • Beyond Compare文件夹合并的方法

    千次阅读 2016-12-22 17:40:05
    当使用Beyond Compare软件比较文件夹差异时,在精确查找出文件差异后,您可能需要对差异文件夹进行合并,如何才能快速...Beyond Compare可以出色的完成此项工作,本节内容帮助您快速了解Beyond Compare文件夹合并
  • 合并文件夹

    热门讨论 2017-05-22 15:10:52
    背景需要按照一定规则合并大量文件夹 这些文件夹是按照命名分类的 这些文件夹的命名存在一定规律,比如A_001_005,A_004-...例如上图两个文件夹中,任务号相同,其中的子文件夹都合并到一个主文件夹(TRIPLESAT_1_PM
  • Beyond Compare如何比较两个文件夹差异

    千次阅读 2017-10-17 19:07:50
    在工作中,有时候我们也许会需要比较两个文件夹的差异,查看文件夹中的所有文件是否一致,那么该怎样比较呢? 我们总不能用自己的眼睛来查看查找差异吧,这样不仅浪费时间,还说不定会有查找不全的时候。 Beyond ...
  • linux把 子文件夹合并为一个文件夹: 新建result 文件夹: mkdir result 下面两个命令都可以: cp {0,1,2}*/* result/ \cp -rf --link {0,1,2}*/* result/ 解释: \cp -rf --link dir2/* dir1/ cp 即copy缩写,...
  • 1.加载rio包 ...2.锁定文件夹 files = list.files(“C:/Users/Administrator/Desktop/result”,pattern="*.xlsx") 3.合并文件 myfiles=do.call(rbind,lapply(paste(“C:/Users/Administrator/Desk...
  • python读写excel文件,合并同一个文件夹下所有excel文件
  • 批量实现多个文件夹中的文件合并

    千次阅读 2020-04-12 23:19:07
    例如,如下两个文件夹中所有的文件整理到一个新的文件夹中 点开第一个文件夹,如下图 那么这里附上源代码。 #导入shutil库用做移动文件 import shutil import os path= r"D:\下载" #因路径很长,一部分路径定...
  • import shutil #导入这包 txtpath='/CNN/txtpath' namelist=[x for x in os.listdir(txtpath)] namelist.sort(key=lambda x:int(x[:-4])) #txt file name print len(namelist)#1674 outfilename='/CNN/b.t...
  • 数据集下载下来有多部分,part1,part2,part3…需要这多部分合成一部分。查了下,没找到直接可以达到效果的命令行(试过cat,rsync等) 解决方案: 写一段python脚本:merge_folder.py #!/usr/bin/env ...
  • 合并同一个文件夹下的多个txt文件 具体步骤如下:假设想要合并0,1,2,3,4,5,6这几个txt文件
  • Ubuntu 将两个文件合并为一个文件

    千次阅读 2016-05-11 14:51:25
    将两个文件合并为一个文件: 使用cat命令从文件中读入两个文件,然后重定向到一个新的文件: [plain] view plain copy   $ cat file1.txt file2.txt > file.txt : file1.txt和file2.txt...
  • vim 如何比较两个文件夹

    千次阅读 2012-11-22 10:32:18
    1. 使用vim的比较模式打开两个文件: vim -d file1 file2 或 vimdiff file1 file2 2. 如果已经打开了文件file1,再打开另一个文件file2进行比较: :vert diffsplit file2 如果没有用vert命令,diffsplit则会...
  • 合并pdf文件Article Update 13-March-2020: I removed the source code. The article that remains should act as a "design roadmap" for members who want to write the code in the programming language of...
  • Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 ...有了 Power Query 后,不用再写代码,直接用它就可以合并个文件夹(可包含子文件夹)下所有的 Excel 文件与一个 Excel 文档中所有 Sheet。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 108,960
精华内容 43,584
关键字:

怎么将两个文件夹合并