格式化控制台输出(Formatting console Output)

2019-06-25 21:00发布

我有麻烦蟒纹出正确对齐文本。 我已经试过我什么都知道,但还是同样的结果,这是非常烦人!

下面是我收到的控制台

这里是我的代码。

print " FileName\t\t\t\t\tStatus\t\tBinary Type\n"  

for files in PASS:
    log = subprocess.check_output(['dumpbin','/HEADERS',files])
    if arch64 in log:
        print" %s \t\t\t\tPASSED\t\t 64-bit \t\t  " %files 
    elif arch32 in log:
        print" %s \t\t\t\tPASSED\t\t 32-bit \t\t  " %files
print"\n"   
for files in FAILED:

    print" %s \t\t\t\t  FAILED \t\t        " %files

print "\n\n

Answer 1:

使用%45s做一个右对齐字段长45个字符。 并使用%-45s使一个左对齐字符串。 也可以考虑提取的线打印成一个功能 - 这样你就可以在一个地方轻松地改变它。 像这样:

# fake setup 
PASS = ["foo.exe", "bar.exe", "really_long_filename.exe"]
FAILED = ["failed.exe"]
types = ["32-bit", "64-bit", "64-bit"]
arch64 = '64'
arch32 = '32'

# your code
def print_row(filename, status, file_type):
    print " %-45s %-15s %15s" % (filename, status, file_type)

print_row('FileName', 'Status', 'Binary Type')

for files in PASS:
    log = types.pop()
    if arch64 in log:
        print_row(files, 'PASSED', '64-bit')
    elif arch32 in log:
        print_row(files, 'PASSED', '32-bit')
print"\n"   

for files in FAILED:
        print_row(files, 'FAILED', '')

print "\n\n"


Answer 2:

代替标签,最好使用字符串格式化指令,它是可以指定空格的确切数字和保留输出。

例如

print '>>%20s<<' %('some string')
>>         some string<<

将预留20个车位, -align这个字符串显示。 您可以留下使用-justify它%-20s

print '>>%-20s<<' %('some string')
>>some string         <<

号可以使用指定的d为整数,并且f浮点值。 例如,

 print '%03d %5.2f' %(5, 22/7.0)
 005  3.14

在这个例子中我保留3的整数值零填充的空间,和5位为(小数点后空间2的值)的浮子。 您可以在这里控制alignemnt太- 还有许多其他的选择来格式化输出,请参见下面的推荐链接了解更多详情。

请注意,使用的.format()函数是鼓励。 看到那么我的答案在这里了解如何使用.format() 这个答案也可以帮助。

虽然.format看起来非常详细,它确实提供了极大的灵活性的交易,我最喜欢的功能之一是可以轻松打印逗号大量的可读性的能力。

请参见上字符串格式化Python文档的更多详细信息,以帮助您排队的输出只是正是你喜欢的方式。



Answer 3:

如果你使用字符串格式化你可以把它简化了很多的填充 ,为如。

>>> '%20s' % 'test'
'                test'
>>> '%-20s' % 'test'
'test                '


Answer 4:

我建议使用ljust与他们一些东西一样

print files.ljust(20) + 'Passed'.ljust(5) + '64-bit'  

而不是这样的:

print" %s \t\t\t\tPASSED\t\t 64-bit \t\t  " %files


Answer 5:

你可以使用一个第三方的模块,用于格式化输出到控制台。

即: texttable



文章来源: Formatting console Output