Я пытался запустить код, где я хотел читать листы Excel. Проблема была, если есть файл, у которого нет листа с именем скажем: SheetSum Я не могу переместить его в место ошибки !! Код, который я написал, был:
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')
Ошибка выдачи:
[WinError 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом
Я должен был добавить полный try except with finally
блок и сказать, что finally
мне нужно закрыть файл в любом случае, как:
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')
В противном случае файл по-прежнему остается открытым фоном.
Если finally
присутствует, он указывает обработчик очистки . try
Предложение выполняется, включая любые except
и else
статьи. Если исключение возникает в каком-либо из положений и не обрабатывается,
исключение временно сохраняется . finally
Предложение выполняется. Если есть сохраненное исключение, оно повторно вызывается в конце finally
предложения. Если в finally
предложении возникает другое исключение, сохраненное исключение устанавливается как контекст нового исключения.
..Больше здесь