Bonjour,
Dans un post précédent, je cherchais à construire un fichier xml avec LXML représentant une arborescence de répertoires.
Maintenant, je voudrais bien ajouter dans cette représentation xml, les fichiers au fond de l'arborescence.
Le dossier a la structure suivante:
Projet/Lames/Observations/couleurs/image.TIF

Il y a un projet, plusieurs lames (L1, L2, toto...), plusieurs dossiers observations par lame (1,2,...), pour chaque obervation, il y a différent dossier couleurs (bleu, rouge ...)

Mais j'ai un problème, os.walk ne voit pas les fichiers dans les dossiers "couleurs"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import lxml.etree as et
import os
 
def makeNodes(node_dirs, root, leveldirlist, root_level,files):
 
    for d in leveldirlist:
        child = et.Element("node{0}".format(root_level), name=d)
        nodes_dirs[os.path.join(root, d)] = child
        nodes_dirs[root].append(child)
 
level={}            
if __name__ == '__main__':
    topdir = '/home/claire/Applications/ImagesTest/CytoProject'
    projetxml = et.Element('CytoGenet')  # racine
    parent = projetxml
    nodes_dirs = {topdir: parent}
    ln_root = len(topdir)
    for root, dirs, files in os.walk(topdir):
        lvl = root[ln_root:].count(os.path.sep)
        makeNodes(nodes_dirs, root, dirs, lvl,files)
        if files=="1.TIF":print "*"
 
    print(et.tostring(projetxml,pretty_print=True))
    print projetxml.getchildren()[0].get("name")
    slides=projetxml.getchildren()
    metaphases=slides[0].getchildren()
    for m in metaphases:
        print m.get("name")
aucune "*" n'est imprimée dans la console de sortie, indiquant que les fichiers "1.TIF" ne sont pas détectés.

un conseil? Merci.

Jean-Pat