R 的 browser() 等效于 Python
R's browser() equivalent in Python
标题说明了一切。当您工作 R
并使用 RStudio
时,通过在代码中的任何地方删除 browser()
调用并查看哪里出了问题,调试某些东西真的很容易和简单。有没有办法用 Python 做到这一点?我正在慢慢厌倦打印语句调试。
你好像在找ipdb
基本用法是设置:
import ipdb
ipdb.set_trace()
在你的代码中探索;这会将您直接带到该部分代码,因此您可以探索此时的所有变量。
对于您的特定用例:"Would it be a setting in my Console so that it Opens pdb right before something crashes"(对另一个答案的评论),您可以使用上下文管理器:launch_ipdb_on_exception
例如:
from ipdb import launch_ipdb_on_exception
def silly():
my_list = [1,2,3]
for i in xrange(4):
print my_list[i]
if __name__ == "__main__":
with launch_ipdb_on_exception():
silly()
会带你去ipdb
session:
5 for i in xrange(4):
----> 6 print my_list[i]
7
ipdb> i
3
您可以使用 python 的调试器
import pdb
pdb.set_trace()
这将在调试模式下暂停脚本
示例:
my_file=open('running_config','r')
word_count={}
special_character_count={}
import pdb
pdb.set_trace() <== The code will pause here
for config_lines in my_file.readlines():
l=config_lines.strip()
lines=l.upper()
控制台:
> /home/samwilliams/workspace/parse_running_config/file_operations.py(6)<module>()
-> for config_lines in my_file.readlines():
(Pdb) print special_character_count
{}
(Pdb)
标题说明了一切。当您工作 R
并使用 RStudio
时,通过在代码中的任何地方删除 browser()
调用并查看哪里出了问题,调试某些东西真的很容易和简单。有没有办法用 Python 做到这一点?我正在慢慢厌倦打印语句调试。
你好像在找ipdb
基本用法是设置:
import ipdb
ipdb.set_trace()
在你的代码中探索;这会将您直接带到该部分代码,因此您可以探索此时的所有变量。
对于您的特定用例:"Would it be a setting in my Console so that it Opens pdb right before something crashes"(对另一个答案的评论),您可以使用上下文管理器:launch_ipdb_on_exception
例如:
from ipdb import launch_ipdb_on_exception
def silly():
my_list = [1,2,3]
for i in xrange(4):
print my_list[i]
if __name__ == "__main__":
with launch_ipdb_on_exception():
silly()
会带你去ipdb
session:
5 for i in xrange(4):
----> 6 print my_list[i]
7
ipdb> i
3
您可以使用 python 的调试器
import pdb
pdb.set_trace()
这将在调试模式下暂停脚本
示例:
my_file=open('running_config','r')
word_count={}
special_character_count={}
import pdb
pdb.set_trace() <== The code will pause here
for config_lines in my_file.readlines():
l=config_lines.strip()
lines=l.upper()
控制台:
> /home/samwilliams/workspace/parse_running_config/file_operations.py(6)<module>()
-> for config_lines in my_file.readlines():
(Pdb) print special_character_count
{}
(Pdb)