Список не может быть скопирован

Я использую функцию sniff() Scapy, чтобы прослушать пакет из Ethernet. Я храню его в переменной pkt. Позже я хочу сделать копию того же самого, добавив содержимое pkt в другую переменную buffpkt. Первоначально я объявил обе переменные как список, но как только pkt сохранит вывод sniff(), он изменит свой тип на экземпляр. Ниже приведен код.

pkt=[]
buffpkt=[]
pkt=sniff(prn=lambda x:x.sprintf("{IP : %IP.src%  %IP.dst%\n\n} "),timeout=5,store=1)
buffpkt=pkt

Я хочу составить большой список всех перехваченных пакетов, добавив результаты в buffpkt, но не могу. Какие-либо предложения?

2 ответа

Решение

Просто назначая один список другому, вы просто указываете, что первый список указывает на второй список. Для копирования списка вы можете использовать оператор нарезки, например так:

buffpkt = pkt[:]

Сейчас buffpkt будет копия.

Использовать стандартную библиотеку copy скопировать структуры данных в Python: http://docs.python.org/library/copy.html

Другие вопросы по тегам