在交互式提示符(REPL)上调试Python代码时,我经常会编写一些引发异常的代码,但是我没有将它包装在try/中except,所以一旦引发错误,我就永远丢失了异常对象.
通常Python打印出来的追溯和错误消息是不够的.例如,在获取URL时,服务器可能会返回40x错误,并且您需要通过error.read()... 的响应内容,但您还没有得到错误对象.例如:
>>> import urllib2
>>> f = urllib2.urlopen('http://example.com/api/?foo=bad-query-string')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
urllib2.HTTPError: HTTP Error 400: Bad Request
Run Code Online (Sandbox Code Playgroud)
Drat,回应的主体说了什么?它可能包含有价值的错误信息......
我意识到重新运行包含在try/except中的代码通常很容易,但这并不理想.我也意识到在这种特殊情况下,如果我使用的是requests库(不会引起HTTP错误),我就不会有这个问题...但我真的很想知道是否有更通用的方法来获取在这些情况下,Python提示符下的最后一个异常对象.
我写了一个ipython笔记本,分析数据集.现在我想使用此代码循环遍历不同的数据集.
代码分为大约50个单元格(包括注释,降价解释,......).有没有办法在循环中运行部分笔记本电脑或运行具有不同输入参数的整个笔记本?
我不想将所有单元格合并到一个函数中或者将代码下载为python脚本,因为我真的想通过仅执行某些单元格来运行(并试验)部分分析.
基本上它将脚本的重构部分转换为函数并在循环中调用函数,只是"脚本的部分"是笔记本单元格.
我正在处理一个很长的 Jupyter 笔记本,由于某种原因我不得不关闭它并重新启动。之后,我想运行我正在处理的行之前的所有代码。有没有方便的方法来做到这一点?