打印时stdout.write前缀空格

时间:2015-01-22 22:16:36

标签: python stdout

我正在尝试抓取802.11信标并打印它们。打印添加一行,而stdout在通道之前/之后为随机空格添加前缀。任何想法如何让线条在没有换行的情况下向左冲洗?

def beacon_sniff(pkt):
try:
    sta_oui = pkt.addr2[0:8] # Grab vendor OUI of BSSID
    if pkt.subtype == 8:
        if pkt.addr2 not in ap:
            if pkt.info != "\x00\x00\x00\x00\x00\x00\x00\x00": #Filter out hidden SSID's
                ap.append(pkt.addr2)
                #print '{0:<7} \t {1:<32} \t {2:<20} \t {3:<10} \t {4:<10}'.format(int(ord(pkt[5].info)), pkt.info, pkt.addr2, -(256-ord(pkt[0].notdecoded[-4:-3])), get_vendor(sta_oui))
                sys.stdout.write("{0:<7} \t {1:<32} \t {2:<20} \t {3:<10} \t {4:<10}".format(int(ord(pkt[5].info)), pkt.info, pkt.addr2, -(256-ord(pkt[0].notdecoded[-4:-3])), get_vendor(sta_oui)))
                sys.stdout.flush()
except:         
    pass

标准输出:

6            TALKTALK-F148E8...
    6            BTHub3-Z3KP...
  1          BTWifi-X...

打印:

6            TALKTALK-F148E8...

6            BTHub3-Z3KP...

1            BTWifi-X...

2 个答案:

答案 0 :(得分:1)

&#34;随机&#34;由于您在输出字符串中使用\t,因此存在空格。大多数终端中的该字符将移至8的下一个倍数。

这意味着有时添加一个空格最终会增加7个空格。

答案 1 :(得分:0)

返回使用print功能。为了防止在最后添加新行,请在print语句的末尾加上逗号。

这打印在两行:

print "Hello"
print "world!"

但是这会将它打印在同一行:

print "Hello",
print "world!"