Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

readline() in un if?

V
Valerio.Pescatori (1940 points)
11 25 38
in Programmare in Python by (1.9k points)
closed by

Ciao ragazzi, sto usando il readline all'interno di un if e funziona, però ho un dubbio: il 'puntatore' rimane alla riga successiva o ci va solo per fare il controllo? faccio un esempio in modo che si possa capire meglio; in un file.txt tipo:

riga1
prova
riga2
riga3

apro il file in lettura,

stringa=f.readline() #quindi stringa='riga1'
if f.readline()=='prova':
    print('ok')

In effetti questo codice stamperebbe 'ok', ma se io poi facessi un'altra readline, otterrei 'riga2' oppure 'prova'?

Spero di essere stato abbastanza chiaro, grazie yes.

1.1k views
closed with the note: Answered

2 Answers

Best answer
LeonardoEmili (35740 points)
14 65 155
by (35.7k points)
selected by

Buonasera!

Vorrei innanzitutto precisare che il metodo .readline() è utilizzato per leggere ogni riga nel testo. Ora, questo metodo diventa particolarmente utile per leggere chunk del nostro testo, e i motivi possono essere i più diversi. Tra i primi da considerare è sicuramente il metodo di lettura "step-by-step" che questo strumento offre, infatti utilizzando questo metodo in un ciclo possiamo leggere ogni riga per riga del nostro file di testo senza incappare in problemi di memoria satura perché proviamo a leggere l'intero contenuto tutto in una volta con il metodo f.read().

Ora nel tuo caso se vuoi leggere riga per riga, filtrando in base alle tue condizioni ti consiglio di utilizzare un semplice ciclo for. Questo ovviamente a meno che tu non voglia leggere una lunghezza prefissata di testo, in tal caso ti rimando al .readline(). Per farlo ti basta iterare con un ciclo "for variabile in file" e il gioco è fatto! A questo punto puoi filtrare il tuo contenuto utilizzando degli if strategici in punti dove tu vuoi che accada quell'operazione!

Spero di averti aiutato

Ti auguro una buona serata,

Leonardo Emili

p.s. ti passo un link per leggere bene la documentazione nel caso tu fossi curioso: 
https://www.tutorialspoint.com/python/file_readline.htm

francesco.dev (33560 points)
22 51 129
by (33.6k points)
Ciao!
Otterresti la riga successiva, quindi prova2!
Perché il puntatore cambia di posizione visto che hai richiamato il metodo readline().

Sperando di esserti stato d'aiuto,
Ricorda di contrassegnare la risposta migliore!

- Francesco Pio Scognamiglio