{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "975e0772-67a1-4aea-ac04-2db8d61ef7ed",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05078_Animalia_Chordata_Reptilia_Squamata_Scincidae_Plestiodon_inexpectatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05079_Animalia_Chordata_Reptilia_Squamata_Scincidae_Plestiodon_laticeps إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05087_Animalia_Chordata_Reptilia_Squamata_Sphaerodactylidae_Gonatodes_albogularis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05107_Animalia_Chordata_Reptilia_Squamata_Viperidae_Agkistrodon_contortrix إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05108_Animalia_Chordata_Reptilia_Squamata_Viperidae_Agkistrodon_laticinctus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05114_Animalia_Chordata_Reptilia_Squamata_Viperidae_Crotalus_atrox إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05120_Animalia_Chordata_Reptilia_Squamata_Viperidae_Crotalus_pyrrhus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05124_Animalia_Chordata_Reptilia_Squamata_Viperidae_Sistrurus_catenatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05126_Animalia_Chordata_Reptilia_Squamata_Viperidae_Sistrurus_tergeminus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05131_Animalia_Chordata_Reptilia_Testudines_Cheloniidae_Caretta_caretta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05145_Animalia_Chordata_Reptilia_Testudines_Emydidae_Malaclemys_terrapin إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05146_Animalia_Chordata_Reptilia_Testudines_Emydidae_Pseudemys_concinna إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05148_Animalia_Chordata_Reptilia_Testudines_Emydidae_Pseudemys_peninsularis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05150_Animalia_Chordata_Reptilia_Testudines_Emydidae_Pseudemys_texana إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05159_Animalia_Chordata_Reptilia_Testudines_Kinosternidae_Kinosternon_subrubrum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05160_Animalia_Chordata_Reptilia_Testudines_Kinosternidae_Sternotherus_carinatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05179_Animalia_Cnidaria_Anthozoa_Actiniaria_Actiniidae_Epiactis_prolifera إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05190_Animalia_Cnidaria_Hydrozoa_Anthoathecata_Porpitidae_Velella_velella إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05193_Animalia_Cnidaria_Scyphozoa_Semaeostomeae_Cyaneidae_Cyanea_ferruginea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05194_Animalia_Cnidaria_Scyphozoa_Semaeostomeae_Pelagiidae_Chrysaora_fuscescens إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05195_Animalia_Cnidaria_Scyphozoa_Semaeostomeae_Phacellophoridae_Phacellophora_camtschatica إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05206_Animalia_Echinodermata_Asteroidea_Valvatida_Asterinidae_Patiriella_regularis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05208_Animalia_Echinodermata_Asteroidea_Valvatida_Oreasteridae_Oreaster_reticulatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05214_Animalia_Echinodermata_Echinoidea_Clypeasteroida_Dendrasteridae_Dendraster_excentricus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05218_Animalia_Echinodermata_Ophiuroidea_Amphilepidida_Ophiotrichidae_Ophiothrix_spiculata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05229_Animalia_Mollusca_Bivalvia_Mytilida_Mytilidae_Mytilus_californianus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05231_Animalia_Mollusca_Bivalvia_Mytilida_Mytilidae_Perna_canaliculus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05244_Animalia_Mollusca_Bivalvia_Venerida_Cyrenidae_Corbicula_fluminea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05250_Animalia_Mollusca_Bivalvia_Venerida_Veneridae_Ruditapes_philippinarum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05260_Animalia_Mollusca_Gastropoda_Architaenioglossa_Viviparidae_Cipangopaludina_chinensis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05267_Animalia_Mollusca_Gastropoda_Littorinimorpha_Littorinidae_Littoraria_irrorata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05268_Animalia_Mollusca_Gastropoda_Littorinimorpha_Littorinidae_Littorina_littorea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05271_Animalia_Mollusca_Gastropoda_Littorinimorpha_Naticidae_Neverita_lewisii إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05278_Animalia_Mollusca_Gastropoda_Neogastropoda_Buccinidae_Busycon_carica إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05282_Animalia_Mollusca_Gastropoda_Neogastropoda_Buccinidae_Sinistrofulgur_sinistrum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05286_Animalia_Mollusca_Gastropoda_Neogastropoda_Muricidae_Nucella_lamellosa إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05300_Animalia_Mollusca_Gastropoda_Nudibranchia_Coryphellidae_Orienthella_trilineata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05302_Animalia_Mollusca_Gastropoda_Nudibranchia_Dendronotidae_Dendronotus_venustus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05314_Animalia_Mollusca_Gastropoda_Nudibranchia_Facelinidae_Pteraeolidia_semperi إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05320_Animalia_Mollusca_Gastropoda_Nudibranchia_Onchidorididae_Acanthodoris_rhodoceras إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05322_Animalia_Mollusca_Gastropoda_Nudibranchia_Phyllidiidae_Phyllidia_ocellata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05328_Animalia_Mollusca_Gastropoda_Nudibranchia_Polyceridae_Triopha_maculata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05356_Animalia_Mollusca_Gastropoda_Stylommatophora_Limacidae_Limax_cinereoniger إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05380_Animalia_Mollusca_Polyplacophora_Chitonida_Chitonidae_Acanthopleura_granulata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05390_Fungi_Ascomycota_Dothideomycetes_Venturiales_Venturiaceae_Apiosporina_morbosa إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05398_Fungi_Ascomycota_Lecanoromycetes_Lecanorales_Cladoniaceae_Cladonia_coniocraea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05405_Fungi_Ascomycota_Lecanoromycetes_Lecanorales_Lecanoraceae_Protoparmeliopsis_muralis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05408_Fungi_Ascomycota_Lecanoromycetes_Lecanorales_Parmeliaceae_Flavoparmelia_caperata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05427_Fungi_Ascomycota_Lecanoromycetes_Ostropales_Graphidaceae_Graphis_scripta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05435_Fungi_Ascomycota_Lecanoromycetes_Pertusariales_Icmadophilaceae_Dibaeis_baeomyces إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05441_Fungi_Ascomycota_Lecanoromycetes_Teloschistales_Teloschistaceae_Teloschistes_flavicans إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05457_Fungi_Ascomycota_Pezizomycetes_Pezizales_Morchellaceae_Morchella_americana إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05460_Fungi_Ascomycota_Pezizomycetes_Pezizales_Sarcoscyphaceae_Sarcoscypha_austriaca إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05480_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Agaricaceae_Leucoagaricus_americanus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05487_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Amanitaceae_Amanita_augusta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05495_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Amanitaceae_Amanita_novinupta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05502_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Bolbitiaceae_Conocybe_apala إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05508_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Crepidotaceae_Crepidotus_mollis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05509_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Cyphellaceae_Chondrostereum_purpureum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05518_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Hygrophoraceae_Hygrocybe_coccinea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05525_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Hymenogastraceae_Gymnopilus_junonius إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05532_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Mycenaceae_Cruentomycena_viscidocruenta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05535_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Mycenaceae_Mycena_epipterygia إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05536_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Mycenaceae_Mycena_haematopus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05540_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Mycenaceae_Panellus_stipticus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05545_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Nidulariaceae_Cyathus_striatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05546_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Omphalotaceae_Gymnopus_dryophilus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05549_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Omphalotaceae_Omphalotus_olivascens إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05555_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Pleurotaceae_Pleurotus_ostreatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05564_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Psathyrellaceae_Coprinopsis_atramentaria إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05580_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Strophariaceae_Hypholoma_lateritium إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05586_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Strophariaceae_Stropharia_ambigua إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05587_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Strophariaceae_Stropharia_rugosoannulata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05590_Fungi_Basidiomycota_Agaricomycetes_Agaricales_Tubariaceae_Tubaria_furfuracea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05593_Fungi_Basidiomycota_Agaricomycetes_Auriculariales_Auriculariaceae_Auricularia_cornea إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05601_Fungi_Basidiomycota_Agaricomycetes_Boletales_Boletaceae_Imleria_badia إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05608_Fungi_Basidiomycota_Agaricomycetes_Boletales_Boletaceae_Xerocomus_subtomentosus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05610_Fungi_Basidiomycota_Agaricomycetes_Boletales_Hygrophoropsidaceae_Hygrophoropsis_aurantiaca إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05629_Fungi_Basidiomycota_Agaricomycetes_Geastrales_Geastraceae_Geastrum_saccatum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05631_Fungi_Basidiomycota_Agaricomycetes_Gloeophyllales_Gloeophyllaceae_Gloeophyllum_sepiarium إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05638_Fungi_Basidiomycota_Agaricomycetes_Hymenochaetales_Hymenochaetaceae_Porodaedalea_pini إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05640_Fungi_Basidiomycota_Agaricomycetes_Hymenochaetales_Rickenellaceae_Rickenella_fibula إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05647_Fungi_Basidiomycota_Agaricomycetes_Phallales_Phallaceae_Mutinus_elegans إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05659_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Laetiporaceae_Laetiporus_cincinnatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05664_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Meripilaceae_Grifola_frondosa إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05668_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Meruliaceae_Bjerkandera_adusta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05681_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Polyporaceae_Ganoderma_sessile إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05693_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Polyporaceae_Trametes_hirsuta إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05695_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Polyporaceae_Trametes_versicolor إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05696_Fungi_Basidiomycota_Agaricomycetes_Polyporales_Sparassidaceae_Sparassis_spathulata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05707_Fungi_Basidiomycota_Agaricomycetes_Russulales_Russulaceae_Lactarius_xanthogalactus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05720_Fungi_Basidiomycota_Dacrymycetes_Dacrymycetales_Dacrymycetaceae_Dacryopinax_spathularia إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05730_Plantae_Bryophyta_Bryopsida_Bryales_Bryaceae_Rhodobryum_ontariense إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05734_Plantae_Bryophyta_Bryopsida_Bryales_Mniaceae_Rhizomnium_glabrescens إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05739_Plantae_Bryophyta_Bryopsida_Funariales_Funariaceae_Physcomitrium_pyriforme إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05740_Plantae_Bryophyta_Bryopsida_Grimmiales_Grimmiaceae_Grimmia_pulvinata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05743_Plantae_Bryophyta_Bryopsida_Hypnales_Anomodontaceae_Anomodon_attenuatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05750_Plantae_Bryophyta_Bryopsida_Hypnales_Hypnaceae_Hypnum_cupressiforme إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05754_Plantae_Bryophyta_Bryopsida_Hypnales_Plagiotheciaceae_Plagiothecium_undulatum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05757_Plantae_Bryophyta_Bryopsida_Pottiales_Pottiaceae_Syntrichia_ruralis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05761_Plantae_Bryophyta_Polytrichopsida_Polytrichales_Polytrichaceae_Polytrichum_juniperinum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05762_Plantae_Bryophyta_Polytrichopsida_Polytrichales_Polytrichaceae_Polytrichum_piliferum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05770_Plantae_Marchantiophyta_Marchantiopsida_Lunulariales_Lunulariaceae_Lunularia_cruciata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05776_Plantae_Rhodophyta_Florideophyceae_Corallinales_Corallinaceae_Corallina_officinalis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05778_Plantae_Rhodophyta_Florideophyceae_Gigartinales_Gigartinaceae_Chondracanthus_exasperatus إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05786_Plantae_Tracheophyta_Liliopsida_Alismatales_Alismataceae_Alisma_plantago-aquatica إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05808_Plantae_Tracheophyta_Liliopsida_Alismatales_Araceae_Syngonium_podophyllum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05813_Plantae_Tracheophyta_Liliopsida_Alismatales_Hydrocharitaceae_Stratiotes_aloides إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05828_Plantae_Tracheophyta_Liliopsida_Arecales_Arecaceae_Rhopalostylis_sapida إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05838_Plantae_Tracheophyta_Liliopsida_Asparagales_Amaryllidaceae_Allium_drummondii إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05841_Plantae_Tracheophyta_Liliopsida_Asparagales_Amaryllidaceae_Allium_schoenoprasum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05856_Plantae_Tracheophyta_Liliopsida_Asparagales_Amaryllidaceae_Hymenocallis_liriosme إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05857_Plantae_Tracheophyta_Liliopsida_Asparagales_Amaryllidaceae_Hymenocallis_littoralis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05858_Plantae_Tracheophyta_Liliopsida_Asparagales_Amaryllidaceae_Ipheion_uniflorum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05859_Plantae_Tracheophyta_Liliopsida_Asparagales_Amaryllidaceae_Leucojum_aestivum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05875_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Agave_salmiana إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05881_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Asparagus_officinalis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05888_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Camassia_scilloides إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05891_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Cordyline_australis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05899_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Hesperoyucca_whipplei إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05907_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Maianthemum_dilatatum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05909_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Maianthemum_stellatum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05912_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Milla_biflora إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05918_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Nolina_texana إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05937_Plantae_Tracheophyta_Liliopsida_Asparagales_Asparagaceae_Yucca_filamentosa إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05949_Plantae_Tracheophyta_Liliopsida_Asparagales_Asphodelaceae_Dianella_nigra إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05950_Plantae_Tracheophyta_Liliopsida_Asparagales_Asphodelaceae_Hemerocallis_fulva إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05951_Plantae_Tracheophyta_Liliopsida_Asparagales_Asphodelaceae_Kniphofia_uvaria إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05956_Plantae_Tracheophyta_Liliopsida_Asparagales_Asteliaceae_Astelia_nervosa إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05958_Plantae_Tracheophyta_Liliopsida_Asparagales_Hypoxidaceae_Pauridia_capensis إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05965_Plantae_Tracheophyta_Liliopsida_Asparagales_Iridaceae_Iris_cristata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05974_Plantae_Tracheophyta_Liliopsida_Asparagales_Iridaceae_Iris_sibirica إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05979_Plantae_Tracheophyta_Liliopsida_Asparagales_Iridaceae_Moraea_gawleri إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05985_Plantae_Tracheophyta_Liliopsida_Asparagales_Iridaceae_Sisyrinchium_bellum إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\05991_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Acianthus_sinclairii إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06007_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Corallorhiza_maculata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06010_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Corallorhiza_trifida إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06022_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Dactylorhiza_sambucina إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06033_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Epipactis_atrorubens إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06040_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Goodyera_pubescens إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06042_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Goodyera_tesselata إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06050_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Microtis_unifolia إلى dataset\n",
      "تم تقسيم ونسخ الملفات من 1st Dataset\\06056_Plantae_Tracheophyta_Liliopsida_Asparagales_Orchidaceae_Oeceoclades_maculata إلى dataset\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import shutil\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# مسارات المجلدات\n",
    "original_dataset_dir = '1st Dataset'\n",
    "base_dir = 'dataset'\n",
    "train_dir = os.path.join(base_dir, 'train')\n",
    "validation_dir = os.path.join(base_dir, 'validation')\n",
    "test_dir = os.path.join(base_dir, 'test')\n",
    "\n",
    "# إنشاء المجلدات الأساسية إذا لم تكن موجودة\n",
    "for directory in (train_dir, validation_dir, test_dir):\n",
    "    os.makedirs(directory, exist_ok=True)\n",
    "\n",
    "# نسب التقسيم\n",
    "train_ratio = 0.7\n",
    "validation_ratio = 0.1\n",
    "test_ratio = 0.2\n",
    "\n",
    "def split_and_copy_files(class_dir, dest_base_dir):\n",
    "    \"\"\"\n",
    "    تقسيم ملفات الصنف إلى مجموعات train/validation/test ونسخها\n",
    "    class_dir: المسار إلى مجلد الصنف (مثلاً '1st Dataset/classA')\n",
    "    dest_base_dir: المجلد الأساسي 'dataset'\n",
    "    \"\"\"\n",
    "    # جمع جميع ملفات الصور في هذا الصنف\n",
    "    all_images = [\n",
    "        os.path.join(class_dir, f)\n",
    "        for f in os.listdir(class_dir)\n",
    "        if os.path.isfile(os.path.join(class_dir, f))\n",
    "    ]\n",
    "\n",
    "    # تقسيم البيانات: أولاً إلى train و مجموعة مؤقتة (validation+test)\n",
    "    train_images, temp_images = train_test_split(\n",
    "        all_images,\n",
    "        train_size=train_ratio,\n",
    "        random_state=42\n",
    "    )\n",
    "\n",
    "    # ثم تقسيم المجموعة المؤقتة إلى validation و test\n",
    "    val_size = validation_ratio / (validation_ratio + test_ratio)\n",
    "    validation_images, test_images = train_test_split(\n",
    "        temp_images,\n",
    "        train_size=val_size,\n",
    "        random_state=42\n",
    "    )\n",
    "\n",
    "    # نسخ الملفات إلى المجلدات المناسبة\n",
    "    for images, folder_name in zip(\n",
    "        [train_images, validation_images, test_images],\n",
    "        ['train', 'validation', 'test']\n",
    "    ):\n",
    "        dest_dir = os.path.join(dest_base_dir, folder_name, os.path.basename(class_dir))\n",
    "        os.makedirs(dest_dir, exist_ok=True)\n",
    "        for file_path in images:\n",
    "            shutil.copy(file_path, dest_dir)\n",
    "    \n",
    "    # طباعة رسالة تأكيد       \n",
    "    print(f\"تم تقسيم ونسخ الملفات من {class_dir} إلى {dest_base_dir}\")\n",
    "\n",
    "# تطبيق الدالة على كل مجلد صنف داخل original_dataset_dir\n",
    "for class_name in os.listdir(original_dataset_dir):\n",
    "    full_class_dir = os.path.join(original_dataset_dir, class_name)\n",
    "    if os.path.isdir(full_class_dir):\n",
    "        split_and_copy_files(full_class_dir, base_dir)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b7e01ad8-1043-4583-b6a3-e5e7ffb2d39c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                                    train  validation  test\n",
      "class                                                                      \n",
      "05078_Animalia_Chordata_Reptilia_Squamata_Scinc...    210          30    60\n",
      "05079_Animalia_Chordata_Reptilia_Squamata_Scinc...    210          30    60\n",
      "05087_Animalia_Chordata_Reptilia_Squamata_Sphae...    210          30    60\n",
      "05107_Animalia_Chordata_Reptilia_Squamata_Viper...    210          30    60\n",
      "05108_Animalia_Chordata_Reptilia_Squamata_Viper...    210          30    60\n",
      "...                                                   ...         ...   ...\n",
      "06040_Plantae_Tracheophyta_Liliopsida_Asparagal...    210          30    60\n",
      "06042_Plantae_Tracheophyta_Liliopsida_Asparagal...    159          23    46\n",
      "06050_Plantae_Tracheophyta_Liliopsida_Asparagal...    207          30    60\n",
      "06056_Plantae_Tracheophyta_Liliopsida_Asparagal...    134          19    39\n",
      "Total                                               26204        3737  7535\n",
      "\n",
      "[144 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "\n",
    "# مسار المجلد الأساسي\n",
    "base_dir = 'dataset'\n",
    "splits = ['train', 'validation', 'test']\n",
    "\n",
    "# جلب قائمة الأصناف (أسماء المجلدات) من تقسيمة التدريب\n",
    "train_path = os.path.join(base_dir, 'train')\n",
    "class_dirs = sorted([\n",
    "    d for d in os.listdir(train_path)\n",
    "    if os.path.isdir(os.path.join(train_path, d))\n",
    "])\n",
    "\n",
    "# حصر عدد الملفات لكل صنف ولكل تقسيمة\n",
    "rows = []\n",
    "for cls in class_dirs:\n",
    "    row = {'class': cls}\n",
    "    for split in splits:\n",
    "        split_path = os.path.join(base_dir, split, cls)\n",
    "        if os.path.exists(split_path):\n",
    "            row[split] = len([\n",
    "                f for f in os.listdir(split_path)\n",
    "                if os.path.isfile(os.path.join(split_path, f))\n",
    "            ])\n",
    "        else:\n",
    "            row[split] = 0\n",
    "    rows.append(row)\n",
    "\n",
    "# بناء DataFrame وعرض المجموع الكلّي\n",
    "df = pd.DataFrame(rows).set_index('class')\n",
    "df.loc['Total'] = df.sum()\n",
    "\n",
    "print(df)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4bb39956-094b-4929-834f-f7428a6d9526",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Current working directory: C:\\Users\\a.bashatah\\Desktop\\الجامعة\\مشروع التخرج\\مهام مشروع التخرج - عملي\\DATA\n",
      "Contents of CWD: ['.ipynb_checkpoints', '1st Dataset', 'Complete Data downloaded', 'dataset', 'Untitled.ipynb']\n",
      "\n",
      "Exists 'dataset'?: True\n",
      "Contents of 'dataset': ['test', 'train', 'validation']\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "# 1. اطبع مسار مجلّد العمل الحالي\n",
    "print(\"Current working directory:\", os.getcwd())\n",
    "\n",
    "# 2. اعرض محتويات هذا المجلّد\n",
    "print(\"Contents of CWD:\", os.listdir(\".\"))\n",
    "\n",
    "# 3. تحقّق من وجود مجلّد 'dataset' وعدد مكوناته\n",
    "dataset_path = \"dataset\"\n",
    "print(f\"\\nExists '{dataset_path}'?:\", os.path.exists(dataset_path))\n",
    "if os.path.exists(dataset_path):\n",
    "    print(f\"Contents of '{dataset_path}':\", os.listdir(dataset_path))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "38bc7243-771f-4926-8d8b-f0e13c6ac879",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
