Forum >> Principianti >> Primo programma e prime difficoltà

Pagina: Indietro 1 2

Tante domande tutte assieme, bene :D

Allora bravo per aver cercato "il colpevole" nella funzione is_tif_file.
Visto che filter(fn, seq) crea una lista con tutti gli elementi di seq tali per cui fn ritorna True, o seq era una sequenza vuota, o fn ritornava False. La prima facile da verificare con print, i nomi ci sono. Quindi rimane fn, perchè ritorna False? Dentro c'è un'espressione logica and a due condizioni, anche qui sarebbe bastato un print per capire quale delle due condizioni dava False. Diciamo che a tentativi hai fatto in modo di rendere sempre True la prima parte dell' and, e ottieni il risultato voluto... ma a questo punto cosa rappresenta il os.path.isfile "residuo" senza le parentesi? Vero, risulta True, ma non effettua più la funzione richiesta (che era quella di considerare solo i file nel caso in cui nella directory ci fossero anche delle sottodirectory).

In realtà questo esula dallo specifico problema da risolvere, ma riguarda la fondamentale costituzione ad oggetti di Python. Per sintetizzare al massimo il nome di una funzione senza le parentesi di chiamata rappresenta la funzione stessa come oggetto, e ogni oggetto ha un intrinseco valore vero/falso testabile con if, che nel caso di un oggetto funzione risulta sempre True.

... isfile accetta (anzi pretende) benissimo un argomento al momento della chiamata. Il vero problema sono i nomi relativi e la directory di lavoro corrente diversa dal percorso assoluto specificato in listdir. Per usare isfile con il solo nome del file (senza tutto il percorso) bisogna spostarsi prima nella directory giusta con os.chdir(percorso)

Se può servire c'è anche os.path.split(percorsocompletoconnome) che crea una tupla contenente il solo percorso come primo elemento, e il nome del file come secondo elemento.

E qui arriviamo alle tuple vs liste. Che le prime sono immutabili mentre le seconde mutabili è la prima cosa che si legge, diciamo che le tuple si usano per rappresentare sequenze costanti, ad esempio, come nel caso di os.path.split, un valore di ritorno formato da più elementi. Dovrebbero o potrebbero esserci delle differenze anche in termini di velocità e/o memoria occupata. Una lista è qualcosa di più complesso e flessibile, da usare quando è necessario modificarne il contenuto.


A margine... in informatica generalmente una lista è un'altra cosa (che fortunatamente in Python ci si può risparmiare), ma qualche nome semplice alla cosa creata con [ ] o con list() bisognava darglielo... cioè immutable_sequence e mutable_sequence sarebbero stati nomi veramente troppo... javosi :P
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
Claudio_F
ti ringrazio veramente per il supporto che mi hai dato... effettivamente seguendo tutte le tue indicazioni sono riuscito a capire il problema e soprattutto a far funzionare il mio piccolo script. :ok: :) ;) :batti5:







Ora visto che mi sono "gasato" volevo dare una vestizione al mio script e leggendo qua e la.. ho visto che molti e con molte soddisfazioni utilizzano le librerie PythonQT.

Purtroppo questa settimana il lavoro non mi lasciato spazio per fare molte prove con il mio "amico pitone"... :sarcastic:

Ora non c'ho speso ancora troppo tempo.. ma vi anticipo (tremate tremate :devil:) che presto avrò sicuramente altre sciocche domande da sottoporvi... :embarrassed:







Grazie ancora a tutti per l'aiutoooooo...








Pagina: Indietro 1 2



Esegui il login per scrivere una risposta.