Question

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

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

Enquirer: Beginner

||

Solution #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))
Respondent: Martijn Pieters

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy