get_dirs = lambda x : [d for d in os.listdir(x) if os.path.isdir(d)]<div><div><br></div><div>get_dirs(".")</div><div><br></div><br>
<br><br><div class="gmail_quote">2011/5/30 Massimo Capanni <span dir="ltr"><<a href="mailto:massimo.capanni@gmail.com">massimo.capanni@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

In effetti quella che ho postato e' la prima versione del programma,<br>
abbastanza *rozza* :)<br>
<br>
Vedo di sperimentare i tuoi suggerimenti, grazie<br>
<br>
<br>
Il 30 maggio 2011 14:16, Lorenzo Sutton <<a href="mailto:lsutton@libero.it">lsutton@libero.it</a>> ha scritto:<br>
<div><div></div><div class="h5">> Ciao Massimo,<br>
><br>
> Massimo Capanni wrote:<br>
>> Buongiorno a tutti,<br>
>><br>
>> ho appena realizzato una funzione che ha uno strano comportamento a<br>
>> seconda di un certo input.<br>
>><br>
>> La funzione e' questa:<br>
>><br>
>> =======================================<br>
>> def subfolder(cartella):<br>
>>     sotto_cartelle = [] # ritorna una lista di cartelle<br>
>>     stop = 0 # livello di profondita' delle sottocartelle<br>
>>     for root, dirs, files in os.walk(cartella):<br>
>>         if stop == 1:<br>
>>             return sotto_cartelle<br>
>>         else:<br>
>>             for i in dirs:<br>
>>                 sotto_cartelle.append(os.path.join(root,i))<br>
>>             stop = stop + 1<br>
>>     return sotto_cartelle (X)<br>
>> =======================================<br>
>><br>
>> in pratica passo alla funzione una cartella e mi restituisce una lista<br>
>> delle sottocartelle di primo livello nell'albero della directory.<br>
> Sei sicuro che non si possa fare in maniera pił semplice per avere solo<br>
> il primo sotto-livello?<br>
><br>
> - Sempre con os.walk in teoria ti basta una sola riga... Considera il<br>
> secondo elemento della prima tripla che ottieni (fai delle prove con print)<br>
><br>
> - Oppure considera os.listdir combinato con os.path.isdir ...<br>
><br>
> In entrambi i casi occhio ai path relativi VS path assoluti a seconda di<br>
> quello che devi fare e dell'input che dai alla funzione.<br>
><br>
> Giusto per darti un altro punto di vista ;)<br>
><br>
> Lorenzo.<br>
>> Ad esempio:<br>
>> cartella = c:<br>
>><br>
>> Sottocartelle:<br>
>> c:\pippo<br>
>> c:\pluto<br>
>> c:\paperino<br>
>> ...<br>
>><br>
>> Successivamente eseguo questa porzione di codice in una parte del programma,<br>
>> con il quale ricavo le sottocartelle di ogni sottocartella di primo livello:<br>
>><br>
>> =======================================<br>
>>     lista_cartelle = [] # lista delle<br>
>>     temp  = []<br>
>>     temp2 = []<br>
>><br>
>>     temp = subfolder(cartella) # inserisco la lista delle cartelle di<br>
>> primo livello<br>
>><br>
>>     for i in temp:<br>
>>         temp2 = []<br>
>>         temp2 = subfolder(i) # contiene la lista delle sottocartelle<br>
>> della cartella 'i'<br>
>><br>
>>         for j in temp2:<br>
>>             lista_cartelle.append(j)<br>
>> =======================================<br>
>><br>
>> adesso succede che se ometto dalla funzione subfolder() la riga<br>
>> segnata con (X) [return sotto_cartelle], il programma si blocca con un<br>
>> errore perche' se una delle sottocartelle di primo livello e' vuota,<br>
>> il ciclo "for j in temp2" si ferma con un Nonetype error.<br>
>><br>
>> Tuttavia se inserisco la riga (X) di ritorno del valore il programma funziona.<br>
>> Quello che non capisco e' che in ogni caso dovrei trovare una cartella<br>
>> vuota e non un valore None.<br>
>><br>
>> Avete idea di questo strano comportamento?<br>
>><br>
>> massimo<br>
>> _______________________________________________<br>
>> Python mailing list<br>
>> <a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
>> <a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
>><br>
> _______________________________________________<br>
> Python mailing list<br>
> <a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
> <a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
><br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
</div></div></blockquote></div><br></div>