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 finallykhối đầy đủ và nói rằng finallytô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 finallycó, 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ỳ exceptvà elsemệ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 finallykhoả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 finallymệ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