首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式逐行执行/逐步执行Python代码

如何以编程方式逐行执行/逐步执行Python代码
EN

Stack Overflow用户
提问于 2016-12-09 19:59:08
回答 2查看 1.6K关注 0票数 3

我试图找到一种方法,可以让一个程序一行行地遍历Python代码,并对每一行的结果做些什么。实际上,调试器可以通过编程而不是手动控制。如果pdb作为一个字符串在每一步后返回其输出,那么pdb将是我所要寻找的,然后我可以再次调用pdb来拾取我停下来的地方。然而,相反,它输出到stdout,我必须手动输入“步骤”通过键盘。

我尝试过的事情:

  1. 我可以重定向pdb的标准输出。我可以将它重定向到第二个Python程序,然后处理它。但是,我不知道如何让第二个Python程序告诉pdb步进。
  2. 与前一个步骤相关的是,如果我能让pdb一直走到最后(也许我可以想出一些东西来欺骗键盘,反复输入" step "?)然后将输出重定向到一个文件,然后我可以编写另一个程序,当它实际上只是一行一行地读取文件时,它的行为就好像它正在遍历程序一样。
  3. 我可以使用exec手动运行Python代码行。但是,由于我一次只看一行,所以需要手动检测和处理条件、循环和函数调用等内容,这些调用很快就会变得非常复杂。
  4. 我读到一些帖子说pdb是使用sys.settrace实现的。如果没有其他的工作,我应该能够重新创建我需要使用这个行为。

是否有任何既定的/直接的方式来实现我正在寻找的行为?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-09 21:38:18

sys.settrace()是逐步遍历Python代码的基本构建块。pdb完全是用Python实现的,所以您只需看看模块是如何实现的。它还具有各种公共函数/方法,用于在程序控制下执行,有关详细信息,请参阅Python版本的库参考。

票数 2
EN

Stack Overflow用户

发布于 2016-12-17 17:39:05

我读到一些帖子说pdb是使用sys.settrace实现的。如果没有其他的工作,我应该能够重新创建我需要使用这个行为。

别把这当成最后的手段。我认为这是你想要完成的最好的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41067947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档