您可以定义一个装饰器函数来捕获异常并输出异常文件名。以下是一个示例:

import xlwings as xw

def catch_exceptions(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            # 获取异常发生的文件名
            filename = func.__code__.co_filename
            print(f"Exception in {filename}: {e}")
    return wrapper

@catch_exceptions
def function1():
    # 函数1的代码

@catch_exceptions
def function2():
    # 函数2的代码

# 使用xlwings打开工作簿
wb = xw.Book("example.xlsx")

# 在工作簿中运行函数1和函数2
xw.apps.active.books["example.xlsx"].set_mock_caller()
function1()
function2()

在上面的示例中,我们定义了一个catch_exceptions装饰器函数,它接受一个函数作为输入并返回一个新的函数。新函数在执行被装饰的函数时捕获异常并输出异常的文件名和具体信息。您可以在需要进行异常捕获的函数上使用@catch_exceptions装饰器。

请注意,为了在xlwings中正确捕获异常,我们使用了set_mock_caller方法来模拟函数的调用者为当前的活动工作簿。这样可以确保异常信息中包含正确的文件名。

希望这可以帮助到您!如果有任何进一步的问题,请随时提问

python 多个函数共用一个xlwings异常捕获函数异常捕获中可以输出异常文件名

原文地址: https://www.cveoy.top/t/topic/iEcr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录