Maison >développement back-end >Tutoriel Python >Comment traiter par lots des dossiers de style matriochka via Python
[Recommandations d'apprentissage associées : Tutoriel Python]
Avant-propos
Lorsque je prétraitais certaines images de formation de l'équipe de projet, j'ai découvert que les images traitées étaient divisées en catégories et stockées dans des dossiers comme des poupées matriochka, je les ai donc traitées par lots et traitées selon les règles d'origine des dossiers. stocké, cela causera beaucoup de problèmes
Mais grâce à la combinaison des fonctions suivantes, cela m'a aidé à réussir une série de prétraitements.
1. Utilisez la bibliothèque Zhishan facile à utiliser
1. Installez la bibliothèque
Installation pip :
pip install zisan
Fonction 2.getFiles
Appel de fonction :
import zisan.FileTools as zf file_path = 'C:/Users/xxx/Desktop/2016/Annotations' whole_file = zf.getFiles(file_path)
Les images sont stockées dans : Dossier 2016 -> -> ;Sous-dossier-> 00000.png
Grâce à la fonction getFiles, vous pouvez appeler tous les chemins d'image dans tous les dossiers dans Annotations
En d'autres termes, la fonction getFiles appellera tous les chemins de fichiers , qu'il y ait ou non des sous-dossiers au milieu
2. Autres fonctions
Fonction 1.os.listdir
Une fois cette fonction appelée, elle renverra le nom du dossier sous le chemin, qui est stocké dans la liste sous la forme d'une chaîne
Le code est le suivant :
import os file_path = 'C:/Users/xxx/Desktop/2016/Annotations' file_names = os.listdir(file_path) print(file_names)
Effet :
Fonction 2.os.mkdir
Code :
import os new_file_path = 'C:/Users/xxx/Destop/2016/newfile' os.mkdir(new_file_path)
est utilisé pour créer de nouveaux dossiers
3. Utiliser
Exigences : Processus chaque sous-fichier dans le dossier Annotations et stockez-les à l'emplacement correspondant dans le nouveau dossier de fichiers selon les règles d'origine. Les règles de dénomination sont telles que 00000.jpg
import 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
C'est mon idée de base et. processus pour résoudre le problème du traitement des dossiers. Chaque fonction peut être utilisée en combinaison et placée à l'extérieur ou à l'intérieur de la boucle pour avoir des effets différents selon des exigences spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!