Ho uno script in cui all'utente viene richiesto di digitare un nome file (di un file che deve essere aperto) e se il file non esiste nella directory corrente, l'utente viene richiesto nuovamente. Ecco la versione breve:"open()" di Python genera errori diversi per "file non trovato" - come gestire entrambe le eccezioni?
file = input("Type filename: ")
...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...
Quando ho provato il mio script sulla mia MacOS X in Python 3.3x ha funzionato perfettamente bene quando si digita il nome del file sbagliato di proposito (esegue la suite sotto "aspettarsi").
Tuttavia, quando volevo eseguire il mio codice su un computer Windows in Python 3.2x, viene visualizzato un errore che indica che "FileNotFoundError" non è definito. Quindi, Python 3.2 su Windows pensa che "FileNotFoundError" sia una variabile e che i programmi si chiudano con un errore.
Ho scoperto che Python 3.2 su Windows genera un "IOError" se il nome file di input non è valido. L'ho provato sulla mia macchina Linux in Python 2.7, ed è anche un IOError.
Il mio problema è ora, che il codice con
except "FileNotFoundError":
non verrà eseguito su di Python 3.2 di Windows, ma se cambio a
except "IOError":
non funzionerà sul mio Mac più.
Come posso aggirare? L'unico modo che posso pensare è quello di usare solo except
, che di solito non voglio.
Questo non è dovuto a Mac/Windows, è la * versione * di Python. Vorrei indagare su 3.2/3.3 anche su OS X (e 3.3 su Windows), consultare i log delle modifiche e quindi rivedere la domanda/titolo come appropriato. –