python学习之文件处理

Table of Contents

图片成批resize

多个文件夹中某文件,都保存到另一文件夹中

多个文件夹中某文件,都保存到另一文件夹中,并重命名

多个文件夹中,1/4数据用做测试集,其它用作训练集


 

1. 加载识花数据集。接下来我们将 flower_photos 文件夹中的花朵图片都载入到进来,并且用图片所在的子文件夹作为标签值。

data_dir = 'flower_photos/'

contents = os.listdir(data_dir)

classes = [each for each in contents if os.path.isdir(data_dir + each)]

代码讲解:


#返回文件夹中 子文件及子文件夹 名称的列表,contents为['tulips', 'dandelion', 'LICENSE.txt', 'roses', 'sunflowers', 'daisy']
contents = os.listdir(data_dir)


#去掉子文件的名称,只保留子文件夹的名称。classes即为['tulips', 'dandelion', 'roses', 'sunflowers', 'daisy']
classes = [each for each in contents if os.path.isdir(data_dir + each)]

python 对txt中每行内容进行批量替换

python 从txt文件查找含某字段的行,并将这些行名称的图像提取出来另存

Python 统计文件行数

图片成批resize

import skimage
import skimage.io
import skimage.transform
import numpy as np
import scipy.misc
import os
from skimage import io

#file中文件需放在当前文件夹下一份,这里不知道怎么改进
for filename in os.listdir("flie"):
    print(filename)
    
    img = skimage.io.imread(filename)
    h,w = img.shape[:2]
    print(h, w)
    if h<w:
        t = h
    else:
        t = w
    j = int(round((h - t)/2.)) #round()为返回浮点数的四舍五入值
    i = int(round((w - t)/2.))
    img1 = skimage.transform.resize(img[j:j+t, i:i+t], [256, 256])
    scipy.misc.imsave('new/{}'.format(filename),img1)
    print("*****************")

 

# 读取指定文件夹下所有文件的路径,并形成列表格式
import glob

sample_files = glob.glob('./datasets/yibiaoMerge/val/*.jpg')
print(sample_files)

>>> ['./datasets/yibiaoMerge/val/merge_3026.jpg', 
     './datasets/yibiaoMerge/val/merge_3023.jpg', 
     './datasets/yibiaoMerge/val/merge_3022.jpg']



# 截取带有分隔符的字符串的某部分
x = './datasets/yibiaoMerge/val/merge_3026.jpg'
print(x)

>>> ./datasets/yibiaoMerge/val/merge_3026.jpg

b = x.split('/')[-1].split('.jpg')[0]
print(b)

>>> merge_3026

多个文件夹中某文件,都保存到另一文件夹中

import os
import shutil

#先建立labelPng文件夹
for filename in os.listdir("./"):
#     print(filename)
    if '_json' in filename:
        for pngfile in os.listdir(filename):
            if 'IMG' in pngfile:
                print(pngfile)
                shutil.copy('{}/{}'.format(filename,pngfile),'labelPng/')

多个文件夹中某文件,都保存到另一文件夹中,并重命名

# 将多个json文件夹中的img和label复制到新的文件夹
# 并以json文件夹的名字(本代码对json文件夹的名字进行了修改)重命名

import os
import shutil
 
#先建立labelPng文件夹
for filename in os.listdir("./"):
#     print(filename)
    if '_json' in filename:
        newname = filename.split('_')[0].split('roi')[0]
        for pngfile in os.listdir(filename):
            if 'img' in pngfile:
#                 print(pngfile)
#                 shutil.copy('{}/{}'.format(filename,pngfile),'normal_img/')
                shutil.copyfile('{}/{}'.format(filename,pngfile),'normal_img/{}.png'.format(newname))
            if 'label.png' in pngfile:
                shutil.copyfile('{}/{}'.format(filename,pngfile),'normal_label/{}.png'.format(newname))

多个文件夹中,1/4数据用做测试集,其它用作训练集

import os
import random
import shutil

dir_files = os.listdir()

for dir_file in dir_files:
    if 'Merge' in dir_file:
        file_list = os.listdir(dir_file)
        # 随机打乱list
        random.shuffle(file_list)
        
        # 选择1/4的数据测试用,其它训练用
        num_files = len(file_list)
#         print(num_files)
        # 向下取整
        num_val = num_files // 5
        for val_file in file_list[:num_val]:
            shutil.copy(dir_file+'/'+val_file, 'val/')
            
        for train_file in file_list[num_val:]:
            shutil.copy(dir_file+'/'+train_file, 'train/')

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值