【发布时间】:2015-06-19 06:09:15
【问题描述】:
我知道有人问过这个问题here,但该解决方案对我不起作用。我正在使用python 3.4。
我的脚本中有以下格式:
print ( "\t {0:20} {1:<11} {2:<25} {3:11} {4:11} {5:>32}".format( files.name.split('/')[-1], sizeof_fmt(files.size),
str( formatted_timestamp ), files.owner,
files.version_id, files.etag ))
这适用于 python 2.7.x。但是在3.4 我得到了错误:
File "test.py", line 3, in file_print
versionid, etag ))
TypeError: non-empty format string passed to object.__format__
我试过了:
print ( "\t {0:20} {1:<11} {2:<25} {3:11} {!s4:11s} {!s5:>32s}".format( files.name.split('/')[-1], sizeof_fmt(files.size),
str( formatted_timestamp ), files.owner,
files.version_id, files.etag ))
但我仍然遇到同样的错误。我什至将versionid 和etag 转换为字符串并最终得到相同的错误。谁能给我解释一下?
Etag 看起来像这样9893532233caff98cd083a116b013c0b,versionid 是None
【问题讨论】:
-
尝试缩小范围。从
format调用中一一删除参数,直到您不再收到错误为止。开发MCVE 是解决问题的第一步。 -
想解释一下否决票?我已经承认了类似的问题
-
我没有投反对票,但其他人可能会因为您的代码生成
NameError: name 'files' is not defined而不是TypeError而感到恼火。如果不提供我们可以复制-粘贴-运行的代码,它会给人一种印象,就是您没有半途而废。 -
转化发生在字段名之后;
{!s4:11s}无效,只有{4!s:11s}。
标签: python python-3.4