首页 前端知识 如何在 Python 代码中抛出异常

如何在 Python 代码中抛出异常

2025-02-25 13:02:30 前端知识 前端哥 900 451 我要收藏

在编程中,计算带有条件的求和,可以根据使用的编程语言和数据结构选择合适的方法。以下是几种常见的解决方法,分别适用于 Python 和其他常用场景:

在这里插入图片描述

1、问题背景

有一段 Python 代码,其目的是从一个Excel文件中读取数据,然后执行一些操作。但是,在执行过程中遇到了一个问题:无法在代码中抛出异常。这意味着,当代码遇到错误时,不会打印出错误信息,导致调试困难。

2、解决方案

Step 1:确保异常被捕获

在 Python 中,异常是通过 tryexceptraise 关键字来处理的。try 块包含要执行的代码,except 块包含要捕获的异常类型,raise 用于抛出异常。

在这段代码中,try 块包含了所有代码,但是没有 except 块来捕获异常。因此,当代码遇到错误时,没有相应的异常处理逻辑,导致无法打印出错误信息。

Step 2:在适当的地方添加 except

为了能够捕获异常并打印出错误信息,需要在代码中添加 except 块。except 块应该放在 try 块的后面,用于捕获 try 块中抛出的异常。

在修改后的代码中,在 try 块后面添加了 except 块,并使用了通配符 Exception 来捕获所有类型的异常。当代码遇到错误时,会进入 except 块,并打印出异常信息。这样,就可以看到错误信息,并方便调试。

Step 3:使用 raise 来抛出异常

在某些情况下,可能需要在代码中抛出异常,以便在其他地方处理异常。可以使用 raise 关键字来抛出异常。raise 后面可以跟异常类型和异常信息。

例如,在上面的代码中,如果源路径不存在,则会抛出 FileNotFoundError 异常,并打印出异常信息。这样,在其他地方就可以捕获到这个异常,并进行相应的处理。

代码示例

from xlutils.copy import copy
from xlrd import open_workbook
import xlwt
import os
import shutil
import glob
def openexcel_main():
book = open_workbook('input.xls', formatting_info=True)
sheet = book.sheet_by_index(0)
wb = copy(book)
w_sheet = wb.get_sheet(0)
folder_name = ['do_not_delete', 'internal_builds']
for j in range(0, 2):
folder = folder_name.pop()
for i in range(1, (sheet.nrows)):
cell_test_group = sheet.cell(i, 0)
data = str(cell_test_group.value)
print('#####################################')
print(data)
list = []
source_path = '/mnt/' + folder + '/pybuild/' + data + '/MAIN/'
if os.path.exists(source_path):
try:
os.chdir(source_path)
all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)]
for dirs in all_subdirs:
dir = os.path.join('/mnt/' + folder + '/pybuild/' + data + '/MAIN/', dirs)
os.chdir(dir)
current = os.getcwd()
new = str(current).split("/")[6]
list.append(new)
list.sort()
val = list
for i in range(1, 4):
if val == []:
break
else:
print(i)
current_build_number = val.pop()
print('Current_Build:' + current_build_number)
source_path_copy = r"" + source_path + "/" + current_build_number + "/"
print('Copying From:' + source_path_copy)
dest_path = r"/home/builds_repo/" + folder + "/pybuild/" + data + "/MAIN/" + current_build_number + "/"
os.chdir(source_path_copy)
file_name = (glob.glob('*[_bin].*')).pop()
print('File_Copied:' + file_name)
if not os.path.exists(dest_path):
os.makedirs(dest_path)
shutil.copyfile(source_path_copy + file_name, dest_path + file_name)
except Exception as e: # Use Exception if not sure which exception will raise
print('File Not Found ..', e)
else:
raise FileNotFoundError('Source path does not exist')
def main():
openexcel_main()
if __name__ == '__main__':
main()
复制

总结

  • 小规模数据:列表推导式和 filter 是首选。
  • 分组和条件defaultdictpandas 是优选。
  • 大规模数据numpypandas 提供高效解决方案。
  • 数据库存储数据:SQL 查询是最佳方法。

根据数据的规模和场景选择合适的方式可以提高代码效率和可读性。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/21472.html
标签
评论
还可以输入200
共0条数据,当前/页
发布的文章

python调用ollama库详解

2025-02-25 13:02:30

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!