Python:Typeerror:传递给对象的非空格式字符串。\u格式__

2024-05-19 20:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道有人问过这个问题,但解决方法对我不起作用。我正在使用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 ))

但我还是犯了同样的错误。我甚至将versionidetag转换为字符串,最后得到相同的错误。有人能给我解释一下吗?

Etag看起来像这样,versionid是None


Tags: nameformatsize错误filestimestampsplitetag
1条回答
网友
1楼 · 发布于 2024-05-19 20:27:39

其中一个参数是没有自己的__format__()方法的类型,因此使用object.__format__()

object.__format__()不支持任何格式选项,包括字段宽度和对齐方式,这就是为什么会出现错误。

首先转换成字符串应该会有帮助,但您确实需要将转换放在字段名之后;而不是{!s4:11s}使用{4!s:11s}等:

print ( "\t {0:20} {1:<11} {2:<25} {3:11} {4!s:11s} {5!s:>32s}".format(
    files.name.split('/')[-1], sizeof_fmt(files.size),                                                                           
    str(formatted_timestamp), files.owner,
    files.version_id, files.etag))

相关问题 更多 >