<div dir="ltr">Salve.<div><br></div><div>Vorrei in un mio programma ottenere la lista di tutte le funzioni presenti nei file contenuti in una directory.</div><div><br></div><div>Ho un programma principale: main.py e una dir che contiene dei file: mod0.py, ...</div>

<div>Il programma principale deve caricare tutte le funzioni presenti in questi moduli, ma io vorrei anche avere una lista che le contiene.</div><div><br></div><div>Sono riuscito ad avere la lista con i loro nomi, ma mi serve la lista con le funzioni.</div>

<div><br></div><div>Di seguito riporto il programma:</div><div><br></div><div>-----8<------------main.py</div><div>
<p style="margin:0px">"""Dovrebbe produrre una lista con tutte le funzioni presenti</p>
<p style="margin:0px">nei files della directory modules."""</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">import os</p>
<p style="margin:0px">import sys</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">DIREXE = 'modules'</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">def loadexe():</p>
<p style="margin:0px">    """Load all math esercises."""</p>
<p style="margin:0px">    modpath = os.path.join(os.curdir, DIREXE)</p>
<p style="margin:0px">    print(modpath)</p>
<p style="margin:0px">    nfiles = [n_f[:-3] for n_f in os.listdir(modpath) if n_f.endswith('.py')]</p>
<p style="margin:0px">    sys.path.append(modpath)</p>
<p style="margin:0px">    for n_f in nfiles:</p>
<p style="margin:0px">        mod = __import__(n_f)</p>
<p style="margin:0px">        print(mod)</p>
<p style="margin:0px">        exenames = [e for e in dir(mod) if e.startswith('exe_')]</p>
<p style="margin:0px">        print(exenames)</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">loadexe()</p></div><div><div>-----8<------------mod0.py</div></div><div><br></div><div style>La dir "modules" contiene files simili al seguente:</div><div style><br></div><div>
<p style="margin:0px">-----8<------------mod0.py</p><p style="margin:0px">"""Modulo 0"""</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">def exe_primo():</p>
<p style="margin:0px">    """Primo esercizio."""</p>
<p style="margin:0px">    return "primo"</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">def exe_secondo():</p>
<p style="margin:0px">    """Secondo esercizio."""</p>
<p style="margin:0px">    return "secondo"</p>
<p style="margin:0px"><br></p>
<p style="margin:0px">def exe_terzo():</p>
<p style="margin:0px">    """Terzo esercizio."""</p>
<p style="margin:0px">    return "terzo"</p>
<p style="margin:0px"></p><p style="margin:0px">-----8<------------mod0.py</p><div><br></div><p></p></div><div><div style>Grazie per l'attenzione e per qualunque dritta.</div><div style><br></div>-- <br><br>Daniele<br>
<br><a href="http://www.fugamatematica.blogspot.com" target="_blank">www.fugamatematica.blogspot.com</a><br><br>    giusto!<br>    nel verso<br>    forse è perché non guardiamo le cose<br>
    Quando non ci capiamo,<br>
</div></div>