我有麻烦蟒纹出正确对齐文本。 我已经试过我什么都知道,但还是同样的结果,这是非常烦人!
下面是我收到的控制台
这里是我的代码。
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
使用%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"
代替标签,最好使用字符串格式化指令,它是可以指定空格的确切数字和保留输出。
例如
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文档的更多详细信息,以帮助您排队的输出只是正是你喜欢的方式。
如果你使用字符串格式化你可以把它简化了很多的填充 ,为如。
>>> '%20s' % 'test'
' test'
>>> '%-20s' % 'test'
'test '
我建议使用ljust与他们一些东西一样
print files.ljust(20) + 'Passed'.ljust(5) + '64-bit'
而不是这样的:
print" %s \t\t\t\tPASSED\t\t 64-bit \t\t " %files
你可以使用一个第三方的模块,用于格式化输出到控制台。
即: texttable