Formatting console Output
我很难让python打印出正确对齐的文本。我已经尝试了我所知道的一切,但结果还是一样,这很烦人!.
这是我在控制台里要做的
这是我的密码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | print" FileName\t\t\t\t\tStatus\t\tBinary Type " 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" " for files in FAILED: print" %s \t\t\t\t FAILED \t\t " %files print" |
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # 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" " for files in FAILED: print_row(files, 'FAILED', '') print" " |
在可以指定确切的空格数并为输出保留的地方,最好使用字符串格式指令来代替制表符。
例如
1 2 | print '>>%20s<<' %('some string') >> some string<< |
将保留20个空格并右对齐此字符串以供显示。您可以使用
1 2 | print '>>%-20s<<' %('some string') >>some string << |
可以使用
1 2 | print '%03d %5.2f' %(5, 22/7.0) 005 3.14 |
在这个示例中,我为一个整数值保留了3个零填充空格,为一个浮点保留了5个空格(小数点后的值保留了2个空格)。你也可以在这里控制与
注意,鼓励使用
虽然
有关字符串格式的更多详细信息,请参阅python文档,以帮助您按照您希望的方式排列输出。
我建议和他们一起使用像
1 | print files.ljust(20) + 'Passed'.ljust(5) + '64-bit' |
而不是这个:
1 | print" %s \t\t\t\tPASSED\t\t 64-bit \t\t " %files |
如果使用带填充的字符串格式,可以简化它。
1 2 3 4 | >>> '%20s' % 'test' ' test' >>> '%-20s' % 'test' 'test ' |
您可以使用第三方模块将输出格式化到控制台。
即。:文本表