Bonsoir,
j'ai une arboresence de répertoires, ls -R donne
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.:
biblio
dir tree
DirTree.txt
lxml_dir to xml.py
xmldirtree.py
 
./biblio:
Cuisine
Essais
Roman
Science
 
./biblio/Cuisine:
Amerique
Asie
France
 
./biblio/Cuisine/Amerique:
le chili sans pleur
 
./biblio/Cuisine/Asie:
le riz de r à z
 
./biblio/Cuisine/France:
escargot pour les nuls.txt
tête de veau pour tous
 
./biblio/Essais:
Politique
Religion
 
./biblio/Essais/Politique:
on nous cache tout ondr
 
./biblio/Essais/Religion:
mon curé chez les nudistes
 
./biblio/Roman:
r19s
r20s
 
./biblio/Roman/r19s:
le vert et le rouge
 
./biblio/Roman/r20s:
ma vie mon oeuvre
 
./biblio/Science:
maths
physique
 
./biblio/Science/maths:
la table de 1
 
./biblio/Science/physique:
th des ficelles
Dans un premier temps je voudrais recopier l'arborescence dans un fichier xml.

Mon code échoue:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -*- coding: utf-8 -*-
"""
Created on Tue Jan 31 13:30:22 2012
 
@author: Jean-Patrick Pommier
"""
import lxml.etree as et
import os
"""
Lire l'arboresence d'un répertoire projet
                    P
                  / | \
                 A  B  C
               / |\ |\  |\
              a  b ca b c e
Stocker dans un fichier xml
<P>
    <A>
        <a>
        <b>
        <c>
    </A>
    <B>
        <a>
        <b>
    </B>
    <C>
        <c>
        <e>
    </C>
</P>
"""
def makeNodes(parentxml,leveldirlist):
        #print 'parent',parentxml
        print 'chidren',leveldirlist
        for d in leveldirlist:
            child=et.Element(d)
            parentxml.append(child)
 
if __name__ == '__main__':
    topdir='/home/claire/Applications/ProjetPython/testxml/biblio'
    projetxml=et.Element('Project')#racine       
    parent=projetxml
 
    for roots, dirs, files in os.walk(topdir):
        print roots#, '*',dirs, '*',files,'\n'
        makeNodes(parent,dirs)
 
    print(et.tostring(projetxml,pretty_print=True))
Tous les sous répertoires sont au même niveau.
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
<Project>
  <Roman/>
  <Cuisine/>
  <Essais/>
  <Science/>
  <r20s/>
  <r19s/>
  <Amerique/>
  <France/>
  <Asie/>
  <Religion/>
  <Politique/>
  <maths/>
  <physique/>
</Project>
J'ai besoin d'un coup de main pour tranformer les répertoires enfants en répertoires parents.
Merci.
Jean-Patrick