J'essayais d'exécuter un code où je voulais lire des feuilles Excel. Le problème était, s'il y a un fichier qui n'a pas de feuille nommée, dites: SheetSum Je ne peux pas le déplacer vers l'emplacement d'erreur !! Le code que j'ai écrit était:
def read_file(data_file):
# data_file = '\rr\ex.xlsx'
sheets = {}
try:
print("Reading file: "+data_file)
sheets['df_1'] = pd.read_excel(open(data_file,'rb'), 'SheetSum')
except Exception as excpt:
print("Exception occurred", exc_info=True)
return sheets
read_file(file)
shutil.move( file, dirpath +'\\processed_files')
Erreur de don:
[WinError 32] Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus
J'ai dû ajouter un try except with finally
bloc complet et dire que finally
je dois fermer le fichier dans tous les cas comme:
def read_file(data_file):
# data_file = '\rr\ex.xlsx'
sheets = {}
try:
print("Reading file: "+data_file)
sheets_file = open(data_file,'rb')
sheets['df_1'] = pd.read_excel(sheets_file, 'SheetSum')
except Exception as excpt:
print("Exception occurred", exc_info=True)
finally:
sheets_file.close()
return sheets
read_file(file)
shutil.move( file, dirpath +'\\processed_files')
Sinon, le fichier reste ouvert est l'arrière-plan.
Si finally
est présent, il spécifie un gestionnaire de nettoyage . La try
clause est exécutée, y compris toutes les clauses except
et else
. Si une exception se produit dans l'une des clauses et n'est pas gérée, l'
exception est temporairement enregistrée . La finally
clause est exécutée. S'il y a une exception enregistrée, elle est sur-levée à la fin de la finally
clause. Si la finally
clause lève une autre exception, l'exception enregistrée est définie comme contexte de la nouvelle exception.
..Plus ici