Maison  >  Article  >  développement back-end  >  Comment traiter par lots des dossiers de style matriochka via Python

Comment traiter par lots des dossiers de style matriochka via Python

coldplay.xixi
coldplay.xixiavant
2020-08-24 17:14:482350parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer