pyshark を使用したこのコードでは
import pyshark
cap = pyshark.FileCapture(filename)
i = 0
for idx, packet in enumerate(cap):
i += 1
print i
print len(cap._packets)
i
len(cap._packets)
2 つの異なる結果が得られます。何故ですか?
pyshark を使用したこのコードでは
import pyshark
cap = pyshark.FileCapture(filename)
i = 0
for idx, packet in enumerate(cap):
i += 1
print i
print len(cap._packets)
i
len(cap._packets)
2 つの異なる結果が得られます。何故ですか?
ソース コードを見ると、これ_packets
はパケットを含むリストであり、内部でのみ使用されていることがわかります。
FileCapture
パケットを使用してオブジェクトを反復処理すると、keep_packets = True
このリストに追加されます。
オブジェクト内のすべてのパケットにアクセスするには、FileCapture
同じように反復する必要があります。
for packet in cap:
do_something(packet)
ただし、パケットの量をカウントするには、次のようにします。
packet_amount = len(cap)
または、あなたが行ったようにカウンターを使用しますが、完全なパケットリストが含まれていないため使用しないでください。 _packets
コールバック関数を使用して別の方法を追加するだけです。また、少し速いアプローチ。
length = 0
def count_callback(pkt):
global length
length = length + 1
cap.apply_on_packets(count_callback)
print(length)