【Related learning recommendations: python tutorial】
Preface
When I was preprocessing some training images of the project team, I found that the processed images were divided into categories and stored in nesting doll style in folders within folders, so I batch processed them and processed them according to the original When folder rules are stored, it will cause a lot of trouble
But through the combination of the following functions, it helped me successfully complete a series of preprocessing.
1. Use the Zhishan library that you won’t get tired of
##1. Install the library
pip Installation:pip install zisan
2.getFiles function
Function call:import zisan.FileTools as zf file_path = 'C:/Users/xxx/Desktop/2016/Annotations' whole_file = zf.getFiles(file_path)
Through the getFiles function, you can call out all the picture paths in all folders in Annotations
2. Other functions
1.os.listdir function
After this function is called, it will return the name of the folder under the path, which is stored in the list in the form of a string The code is as follows:import os file_path = 'C:/Users/xxx/Desktop/2016/Annotations' file_names = os.listdir(file_path) print(file_names)
2.os.mkdir function
Code:import os new_file_path = 'C:/Users/xxx/Destop/2016/newfile' os.mkdir(new_file_path)
3. Application
Requirements: Process each sub-file in the Annotations folder folder, and store them in the corresponding location in the new file folder according to the original rules. The naming rules are such as 00000.jpgimport zisan.FileTools as zf import os import cv2 from skimage import io file_path = 'C:/Users/xxx/Desktop/2016/Annotations' new_file_path = 'C:/Users/xxx/Destop/2016/newfile' file_names = os.listdir(file_path) #获取Annotations文件夹的子文件夹名称 for i in file_names: #遍历每个子文件夹名称 Index = 0 file_name = file_path + '/' + i #巧妙运用+号得到改子文件夹的路径 os.mkdir(new_file_path + '/' + i) #在newfile里创建一个与子文件夹名称相同的文件夹 whole_pic = zf.getFiles(file_name) #用getFiles函数读取子文件夹内的图片路径 for f in whole_pic: msk = io.imread(f) msk=cv2.cvtColor(msk,cv2.COLOR_RGBA2GRAY) msk[np.where(msk!=0)]=255 io.imsave(new_file_path + '/' + i + '/' + str("%05d" % Index) + '.jpg' , msk) #处理命名可直接+'.jpg'让其以jepg形式存储 Index += 1
The above is the detailed content of How to batch process matryoshka-style folders via Python. For more information, please follow other related articles on the PHP Chinese website!