如何在Python3的trace.trace模块中存储跟踪调用的结果

2024-10-03 11:16:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将跟踪函数调用的结果存储在变量(数据结构)中。我可以在shell中获取结果,但无法将结果存储在变量中

我试图阅读official documentation,但它没有解决这个问题,我也无法使用source code解决这个问题

这是我的代码:

    from driver import main
    from trace import Trace
    import importlib

    class GenerateSequenceDiagram:
        def __init__(self, driver_module):
            self.driver_module = __import__(driver_module)

        def get_functions_called(self, driver_function):
            self.driver_function = getattr(self.driver_module, driver_function)
            print(dir(self.driver_function))
            print(self.driver_function.__name__)
            tracer = Trace(countfuncs=1)
            try:
                tracer.run('{}()'.format(self.driver_function.__name__))
            except Exception as e:
                print(e)
            results = tracer.results()
            results.write_results()
            # results.write_results_file('one.txt',)


    ob = GenerateSequenceDiagram('driver')
    ob.get_functions_called('main')




Tags: fromimportselfgetmaindefdrivertrace
1条回答
网友
1楼 · 发布于 2024-10-03 11:16:48

查看源代码后,发现calledfuncs是需要使用的api

class GenerateSequenceDiagram:
    def __init__(self, driver_module):
        self.driver_module = __import__(driver_module)

    def get_functions_called(self, driver_function):
        self.driver_function = getattr(self.driver_module, driver_function)
        self.driver_function()
        # print(dir(self.driver_function))
        # print(self.driver_function.__name__)
        tracer = Trace(countfuncs=1)
        tracer.run('{}()'.format(self.driver_function.__name__))
        results = tracer.results()
        called_functions = results.calledfuncs
        for filename, modulename, funcname in sorted(called_functions):
            print('filename: {}, modulename: {}, funcname: {}'.format(
                filename, modulename, funcname))
        results.write_results()

相关问题 更多 >