【发布时间】:2020-09-04 16:30:46
【问题描述】:
我正在用 Python 实现代码,但我必须使用以前实现的代码。使用继承的代码在其 HTML 中显示整数时遇到问题。
out.append(
"""<td align="right">%u us</td><td align="right">%u us</td><td align="right">%u us</td><td align="right"><a style="cursor:default" title="average block size: %u B">%u</a></td><td align="right"><a style="cursor:default" title="average block size: %u B">%u</a></td><td align="right">%u</td>"""
% (rtime,wtime,fsynctime,rbsize,rops,wbsize,wops,fsyncops,)
)
这段代码给了我这个错误:
Traceback (most recent call last):
File ".../disks_tab.py", line 652, in disks
fsyncops,
TypeError: %u format: a number is required, not str
我尝试像这样强制 var 类型:
if fsyncops == "-":
fsyncops = 0
就在 out.append... 代码的正上方。字符串“-”是变量实际存储的内容。
它仍然不工作,我得到同样的错误。
【问题讨论】:
-
fsyncops正在以%d格式打印,而不是%u。 -
所以其他变量之一导致了这个错误,尽管
%d也需要一个数字。 -
print((rtime,wtime,fsynctime,rbsize,rops,wbsize,wops,fsyncops))显示什么? -
请不要那样做。我们希望为您提供帮助,但如果错误消息引用了不同版本的代码,就会很困难。
-
对于复杂的格式字符串,错误将不指向不正确的值,而只是其中一个值。显示的行号和显示的变量名都不意味着它是正是那个变量——任何元组都可能失败。我们无法调试 which 变量不正确,您要么必须自己调试,要么提供minimal reproducible example。如果问题出在
fsyncops,那么@Ictus 的回答应该可以解决您的问题。
标签: python string unicode integer