Python 无法复制列表
我正在使用Scapy的sniff()函数来嗅探来自以太网的数据包。我将其存储在一个名为pkt的变量中。稍后,我想通过在另一个变量buffpkt中附加pkt的内容来复制它。最初我将这两个变量声明为list,但一旦pkt存储sniff()输出,它就会将其类型更改为instance。下面是代码Python 无法复制列表,python,type-conversion,sniffing,scapy,Python,Type Conversion,Sniffing,Scapy,我正在使用Scapy的sniff()函数来嗅探来自以太网的数据包。我将其存储在一个名为pkt的变量中。稍后,我想通过在另一个变量buffpkt中附加pkt的内容来复制它。最初我将这两个变量声明为list,但一旦pkt存储sniff()输出,它就会将其类型更改为instance。下面是代码 pkt=[] buffpkt=[] pkt=sniff(prn=lambda x:x.sprintf("{IP : %IP.src% %IP.dst%\n\n} "),timeout=5,store=1) b
pkt=[]
buffpkt=[]
pkt=sniff(prn=lambda x:x.sprintf("{IP : %IP.src% %IP.dst%\n\n} "),timeout=5,store=1)
buffpkt=pkt
我想通过将结果附加到buffpkt来列出嗅探到的所有数据包,但我做不到。有什么建议吗?只需将一个列表分配给另一个列表,就可以使第一个列表指向第二个列表。要复制列表,可以使用切片操作符,如下所示:
buffpkt = pkt[:]
现在
buffpkt
将是一个副本。使用标准库copy
复制Python中的数据结构:但这有助于我附加新结果吗?@sHoMsniff
的返回值实际上不是一个列表,而是一个实现类似列表的访问的自定义对象(使用\uu getitem\uuu
函数)。这就是为什么类型是instance
。我们都喜欢Python的可读性。让我们明白,让我们一字不差,让我们在复制东西时使用copy
。