ฉันพยายามเรียกใช้รหัสที่ฉันต้องการอ่านแผ่นงาน 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
ข้อยกขึ้นอีกข้อยกเว้นข้อยกเว้นที่บันทึกไว้จะถูกตั้งค่าเป็นบริบทของข้อยกเว้นใหม่
.. ที่นี่มากขึ้น