Tôi đã cố chạy một mã mà tôi muốn đọc các bảng excel. Vấn đề là, nếu có một tập tin không có tên là: SheetSum tôi không thể di chuyển nó đến vị trí lỗi !! Mã tôi đã viết là:
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')
Lỗi đưa ra:
[WinError 32] Quá trình không thể truy cập tệp vì nó đang được sử dụng bởi một quy trình khác
Tôi đã phải thêm try except with finally
khối đầy đủ và nói rằng finally
tôi cần phải đóng tệp trong mọi trường hợp như:
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')
Nếu không, tập tin vẫn còn mở là nền.
Nếu finally
có, nó chỉ định một trình xử lý dọn dẹp . Các try
khoản được thực thi, bao gồm bất kỳ except
và else
mệnh đề. Nếu một ngoại lệ xảy ra trong bất kỳ điều khoản nào và không được xử lý,
ngoại lệ đó sẽ tạm thời được lưu . Các finally
khoản được thực thi. Nếu có một ngoại lệ được lưu, nó sẽ được nâng lên ở cuối finally
mệnh đề. Nếu finally
mệnh đề đưa ra một ngoại lệ khác, ngoại lệ đã lưu được đặt làm bối cảnh của ngoại lệ mới.
..Như đây