Devo aprire & scrivere su circa 10 file diversi all'interno dello stesso ciclo. es:Ottenere dettagli di eccezione in Python
for i in range(0,10):
try:
a=5
file1 = open("file1.txt",'w+')
file2 = open("file2.txt",'w+')
#... etc
print(str(a),file=file1)
print(str(a)+"hi",file=file2)
# ... etc
except:
#error handling
Ora quello che vorrei fare è essere in grado di ottenere informazioni specifiche eccezioni come ad esempio quello del file si apriva/scritta entro l'eccezione generale. Dalla mia comprensione corrente, avrei dovuto fare qualcosa di simile per ottenere ciò che voglio:
for i in range(0,5):
a=5
try:
file1 = open("file1.txt",'w+')
print(str(a),file=file1)
except:
#error handling for file1
try:
file2 = open("file2.txt",'w+')
print(str(a)+"hi",file=file2)
except:
#error handling for file2
... che sta per diventare estremamente goffo e poco attraente quando devo fare questo per circa 10 file diversi . C'è un modo per ottenere (ad esempio) le informazioni sul nome del file da un'eccezione generale come nel mio primo esempio? Fondamentalmente così l'eccezione potrebbe segnalare cose come "errore durante la scrittura su file1" senza un tentativo/eccetto specificamente per le operazioni file1.
modifica: Questa è una massiccia eccessiva semplificazione dei dati scritti nel file. str (a) e str (a) + "ciao" non sono rappresentazioni veramente buone dei dati effettivamente scritti; file1 potrebbe aver bisogno di un intero hardcoded, dove file2 potrebbe richiedere una stringa formattata con più variabili. generalizzare il processo di apertura/scrittura in un ciclo non funzionerà molto bene.
I significato per il codice incluso da considerare come se fosse già in un ciclo. lo aggiusto. Ma questo non risolve il mio problema. Le cose scritte in questi file non sono necessariamente simili in alcun modo, forma o forma. file1 potrebbe aver bisogno di un "1" hardcoded stampato, il file2 potrebbe aver bisogno di una variabile stampata, e file3 potrebbe aver bisogno di più variabili. quello che finirà per accadere è una gigantesca dichiarazione di se nel "con"; per esempio. "se nomefile = file1, scrivi questo; se nomefile = file2, scrivi quello; se nomefile = file3, scrivi quest'altra cosa". Il codice sarà altrettanto clunky – user891876
@ user891876: vedere la mia risposta modificata. Predisporre la relazione tra file e dati, quindi scrivere ogni parte di dati nel file associato nel ciclo. – BrenBarn
cosa succede se non voglio stampare su file3 se length (str (a) + str (b))> 5? ogni file ha bisogno di una propria logica. – user891876