Python : Typeerror : Non-empty format string passed to object.__format__

会有一股神秘感。 提交于 2019-11-28 05:03:03

问题


I know this question has been asked here but the solution does not work for me. I am using python 3.4.

I have the following formatting in my script :

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 ))

This works in python 2.7.x. But in 3.4 I get the error:

File "test.py", line 3, in file_print
      versionid, etag ))
TypeError: non-empty format string passed to object.__format__

I tried this:

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 ))

But I still get the same error. I even converted the versionid and etag to strings and end up getting the same error. Can someone explain this to me?

Etag look like this 9893532233caff98cd083a116b013c0b, versionid is None


回答1:


One of your parameters is a type that doesn't have their own __format__() method, so object.__format__() is used instead.

object.__format__() doesn't support any formatting options, including field widths and alignment, which is why you get the error.

Conversion to string first should help, but you do need to put your conversion after the field name; instead of {!s4:11s} use {4!s:11s}, etc:

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))


来源:https://stackoverflow.com/questions/29613676/python-typeerror-non-empty-format-string-passed-to-object-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!