2014-04-23 9 views
5

ho letto qui che si consiglia di utilizzare with open(filename) invece di utilizzare la coppia di open(filename) e filename.close() (almeno per attività di base) e che è anche meglio usare try.Confuso circa la corretta ordine di prova e con in Python

Q1: Se la mia comprensione è corretta, quale sarebbe l'ordine corretto?

try: 
    with open(filename) as f: 
    do something, eg. match string 

o

with open(filename) as f: 
    try: 
    do something, eg. match string 

Q2: qual caso è meglio se voglio anche inserire del codice per far apparire un popup per la gestione degli errori di file? (per file non trovato, o qualcosa del genere)

risposta

8

Mantenete la vostra dichiarazione try/except il più vicino possibile all'origine dell'eccezione.

Se non si cattura IOError s, inserirlo nella dichiarazione with. D'altra parte, se si tratta di un'eccezione che genera open(), mettila attorno alla la dichiarazione with.

Se l'istruzione with è più lungo o non si vuole mascherare la stessa eccezione essere cresciuto nella suite dichiarazione with, eseguire la open() chiamata primo:

try: 
    fileobj = open(filename) 
except IOError: 
    print('File problems!') 
else: 
    with fileobj as f: 
     # do something 
Problemi correlati