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
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))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With