我正在尝试创建一个Python脚本,在这里我解析一个pcap文件,并将流量burstiness测量到亚毫秒级别。问题是dpkt提供的时间戳似乎没有提供足够好的分辨率。以下脚本
#!/usr/bin/python语言
导入dpkt,sys
f=file(sys.argv[1],"rb")
pcap=dpkt.pcap.Reader(f)
for ts, buf in pcap:
eth=dpkt.ethernet.Ethernet(buf)
size = len(eth)
print "packet size %s" % size
print "timestamp %s" % ts
产生以下结果
数据包大小199
时间戳1397589057.04
数据包大小119
时间戳1397589057.04
数据包大小66
时间戳1397589057.04
数据包大小247
时间戳1397589057.04
这些包的实际时间戳的格式应该是.043549,它可以降到微秒。有人知道如何得到完整的时间戳吗?
最佳答案
我假设你在做这样的事情:
for ts, buf in pcap:
print ts
然后观察时间戳是
1408173480.93
而不是1408173480.936543
。这是因为python中的print函数将浮点限制为两个小数位。例子:
>>> x = 1258494066.119061
>>> x
1258494066.119061
>>> print x
1258494066.12
如果确实需要打印完整值,请使用格式:
>>> "{0:.6f}".format(x)
'1258494066.119061'
关于python - 使用dpkt的微秒分辨率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23093447/