我知道这个问题已在这里提出,但解决方案对我不起作用.我在用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 ))
Run Code Online (Sandbox Code Playgroud)
这适用于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__
Run Code Online (Sandbox Code Playgroud)
我试过这个:
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 ))
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误.我甚至将versionid和转换etag为字符串并最终得到相同的错误.谁可以给我解释一下这个?
Etag看起来像这样9893532233caff98cd083a116b013c0b,版本是None
您的一个参数是没有自己的__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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12375 次 |
| 最近记录: |