我最近遇到了这个TypeError异常,我发现很难调试.我最终将它减少到这个小测试用例:
>>> "{:20}".format(b"hi")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__
Run Code Online (Sandbox Code Playgroud)
无论如何,这对我来说非常不明显.我的代码的解决方法是将字节字符串解码为unicode:
>>> "{:20}".format(b"hi".decode("ascii"))
'hi '
Run Code Online (Sandbox Code Playgroud)
这个例外是什么意思?有没有办法让它更清晰?
我有一个发送参数的表单.在我的表格中,我有一个复选框.如果没有勾选我的复选框,那么我将不会获得任何参数.
如果在我的模块中我有:
var = request.form['mycheckbox']
Run Code Online (Sandbox Code Playgroud)
并且如果未选中我的复选框(参数未通过)
然后在调试模式下,我收到错误消息:
错误请求浏览器(或代理)发送了此服务器无法理解的请求.
什么都没告诉我错误是什么.
我使用以下方法阻止了异常:
try:
var=request.form['checkbox']
except:
var=None
Run Code Online (Sandbox Code Playgroud)
但是,我能不能改变Flask如何处理这种情况的行为?
我有一些python代码抛出KeyError异常.到目前为止,我还没有能够在操作环境之外重现,所以我不能在这里发布一个简化的测试用例.
引发异常的代码正在迭代循环,如下所示:
for k in d.keys():
if condition:
del d[k]
Run Code Online (Sandbox Code Playgroud)
该del[k]
行抛出异常.我try/except
在它周围添加了一个条款,并且能够确定它k in d
是假的,但是k in d.keys()
是真的.
关键d
是旧式类实例的绑定方法.
该类实现了__cmp__
和__hash__
,因此,这就是我一直专注我的注意.