4

pyshark を使用したこのコードでは

import pyshark
cap = pyshark.FileCapture(filename)
i = 0
for idx, packet in enumerate(cap):
    i += 1
print i
print len(cap._packets)

ilen(cap._packets)2 つの異なる結果が得られます。何故ですか?

4

4 に答える 4

0

ソース コードを見ると、これ_packetsはパケットを含むリストであり、内部でのみ使用されていることがわかります。

FileCaptureパケットを使用してオブジェクトを反復処理すると、keep_packets = Trueこのリストに追加されます。


オブジェクト内のすべてのパケットにアクセスするには、FileCapture同じように反復する必要があります。

for packet in cap:
    do_something(packet)

ただし、パケットの量をカウントするには、次のようにします。

packet_amount = len(cap)

または、あなたが行ったようにカウンターを使用しますが、完全なパケットリストが含まれていないため使用しないでください。 _packets

于 2014-11-19T20:40:16.640 に答える
0

コールバック関数を使用して別の方法を追加するだけです。また、少し速いアプローチ。

length = 0 
def count_callback(pkt):
    global length
    length = length + 1

cap.apply_on_packets(count_callback)

print(length)
于 2021-10-06T13:47:30.850 に答える