通过 format 来大量输出字符变量,并排版

 1 def get_protocol_info_from_pcap(pcapfile):
 2     pcap = PcapFile(pcapfile)
 3     start = time.time()
 4     pkts = {}
 5     for p in pcap.tcp_udp_packets():
 6         l3 = p.L3_protocol
 7         if pkts.has_key(l3):
 8             l3pkts = pkts[l3]
 9             l3pkts.append(p.length)
10             pkts[l3] = l3pkts
11         else:
12             pkts[l3] = [p.length]
13     total = 0
14     pcap.close()
15     formatstr = "{0[0]:>12}{0[1]:>11}{0[2]:>15}{0[3]:>8}{0[4]:>15}{0[5]:>10}{0[6]:>15}"
16     total_p = 0
17     total_b = 0
18     for i, j in pkts.items():
19         total_b += sum(j)
20         total_p += j.__len__()
21 
22     print "-" * 100
23     print pcapfile
24     print ""
25     print formatstr.format(["protocol_num", "protocol", "total_packets", "rate", "total_bytes", "rate", "aver_pkt_len"])
26     for i, j in pkts.items():
27         bytes_percent = "%.1f%%" % (sum(j) * 100.0 / total_b)
28         pkts_percent = "%.1f%%" % (j.__len__() * 100.0 / total_p)
29         print formatstr.format(
30             [i, Protocol.l3_protocols[i], j.__len__(), pkts_percent, sum(j), bytes_percent, sum(j) / j.__len__()])
31     print formatstr.format(["", "Total", total_p, "", total_b, "", total_b / total_p])
32     end = time.time()
33     print ""
34     print "time cost: %s" % (end - start)
35     print "-" * 100
36     print ""

 

posted on 2017-03-22 09:52  js.yeyong  阅读(245)  评论(0编辑  收藏  举报

导航