0Pricing
Python Academy · Lezione

Utilizzo dell'istruzione with per i file

Si assicuri che i file vengano chiusi automaticamente utilizzando i context manager.

Utilizzo dell'istruzione with per i file è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

Introduzione

L'istruzione with garantisce che i file vengano chiusi automaticamente, anche se si verifica un'eccezione.

L'istruzione with

with open('file.txt') as f: ... chiude automaticamente f quando si esce dal blocco, sia normalmente sia a causa di un'eccezione.
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

Perché with è migliore di try/finally

Senza with, deve scrivere try: ... finally: f.close() per garantire la chiusura. with gestisce tutto automaticamente.
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

Più file

with open('a.txt') as a, open('b.txt') as b: apre due file in un'unica istruzione.
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

Protocollo dei gestori di contesto

with usa __enter__ e __exit__. open() restituisce un oggetto file che implementa questi metodi. Più avanti ne scriveremo uno personalizzato.
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

Lettura ed elaborazione

Combini with, for line in f: e .strip() per elaborare le righe in modo ordinato: rimuova i caratteri di nuova riga e ignori le righe vuote.
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

Scrittura con with

with open('out.txt','w') as f: f.write('data') — il file viene svuotato del contenuto bufferizzato e chiuso quando si esce dal blocco.
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

Verifica dell'esistenza di un file

import os; os.path.exists('file.txt') restituisce True se il file esiste. Evita FileNotFoundError.
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

Errori di open()

FileNotFoundError: il file non esiste. PermissionError: non si dispone dei permessi di lettura o scrittura. Racchiuda il codice in try/except per una gestione robusta.
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO per file in memoria

from io import StringIO consente di usare una stringa come oggetto file: è ideale per testare il codice che elabora i file.
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

Modulo tempfile

tempfile.NamedTemporaryFile() crea un file temporaneo che viene eliminato alla chiusura. È sicuro per l'elaborazione di dati transitori.
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

Verifica rapida

Che cosa garantisce l'istruzione with quando viene usata con l'I/O dei file?

Riepilogo

with open(f) as h: chiude automaticamente h. Usi più destinazioni per più file. Usi StringIO per i test in memoria. Gestisca FileNotFoundError in modo appropriato.

Continui così

Ottimo lavoro! Passi alla lezione successiva per continuare a fare progressi.

Domande Frequenti

La lezione «Utilizzo dell'istruzione with per i file» è gratuita?

Sì — il testo completo di «Utilizzo dell'istruzione with per i file» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «Utilizzo dell'istruzione with per i file»?

Si assicuri che i file vengano chiusi automaticamente utilizzando i context manager. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Utilizzo dell'istruzione with per i file»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Apertura e lettura dei file
  2. Scrittura e aggiunta ai file
  3. Utilizzo dell'istruzione with per i file
  4. Gestione dei percorsi dei file con pathlib
← Torna a Python Academy