python从指定文件夹复制部分文件到另一文件夹

  • 定义移动函数remove_file
  • os.listdir(path)
  • shuffle()
  • remove_file()
  • 阳性病例集
  • 阴性病例集


尝试使用python对原来的数据集进行了新的组织,原来是想做多分类就使用了多级多病例的组织方式,现在做二分类只需将阳性阴性病例按比例划分至训练集和测试集。

新的组织方式如下:

python 特定文件夹的import python从指定文件夹导入模块_深度学习


定义移动函数remove_file

后来想了想应该叫copy函数的,但是也懒得改了,标注一下继续使用先

函数接收旧的路径和新路径以及要将病例训练集测试集划分的比例



os.listdir(path)

path – 需要列出的目录路径
用于返回指定的文件夹包含的文件或文件夹的名字的列表



shuffle()

lst – 可以是一个列表
shuffle() 方法将序列的所有元素随机排序

shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

import random
random.shuffle (lst )



remove_file()

def remove_file(old_path,new_path,ratio):
    print(old_path)
    print(new_path)
    filelist=os.listdir(old_path)
    shuffle(filelist) #打乱列表,让每次创建新的数据集时用于训练和测试的部分有所区别



阳性病例集

原来的组织方式是一个病例一个文件夹,文件夹名中的病类(大写英文字母)表示其阴性或阳性。

for file in filelist:
        if file[0]=='A':  # 如'A001'
            src_path=old_path+'\\'+file
            print(src_path)
            src_filelist=os.listdir(src_path)
            print(len(src_filelist)) #查看有文件夹下有几张图片
            point=ratio*len(src_filelist) #要放进训练集的图片数量
            x=0

定义变量point作为一个病例用来训练的图片数量,如一个病例100张图片,ratio=0.7,则使用70张用于训练,30张用于测试。
刚开始学习python,很多地方不熟悉,所以乱拼凑出了这么冗长的代码,要好好掌握语言!

for src_file in src_filelist:
                if x<point:
                    src=os.path.join(src_path,src_file)
                    print(src_path)
                    dst_path=new_path+'\\'+'train'
                    print(dst_path)
                    dst=os.path.join(dst_path)
                    print(src)
                    shutil.copy(src,dst)
                    x+=1
                else:
                    src=os.path.join(src_path,src_file)
                    print(src_path)
                    dst_path=new_path+'\\'+'test'
                    print(dst_path)
                    dst=os.path.join(dst_path)
                    print(src)
                    shutil.copy(src,dst)
                    x+=1



阴性病例集

道理和阳性比例集的读取是一样的,只需修改目的文件夹路径。

for src_file in src_filelist:
                if x<point:
                    src=os.path.join(src_path,src_file)
                    print(src_path)
                    dst_path=new_path+'\\'+'train'
                    print(dst_path)
                    dst=os.path.join(dst_path)
                    print(src)
                    shutil.copy(src,dst)
                    x+=1
                else:
                    src=os.path.join(src_path,src_file)
                    print(src_path)
                    dst_path=new_path+'\\'+'test'
                    print(dst_path)
                    dst=os.path.join(dst_path)
                    print(src)
                    shutil.copy(src,dst)
                    x+=1




本次简单地使用python完成了文件复制的操作,代码写的实在是太太潦草了,还有许多地方需要改进,就当是自己学习过程的一个记录吧。