我想创建一个空的 pcap
文件。我正在使用“Scapy”的 wrpcap
模块。但是 wrpcap
只接受 2 个参数
:一个是 文件名
,另一个是 数据包列表
,例如:
wrpcap("my.pcap",my_pkt_list)
因为我想把它设为空,而且我没有数据包列表,所以我正在向 pcap
文件写入一个空字符串。它正在创建文件,但也会给出警告和错误,因为字符串与数据包类型不匹配。
WARNING: PcapWriter: unknown LL type for str. Using type 1 (Ethernet)
Traceback (most recent call last):
File "test.py", line 35, in <module>
wrpcap("pcap/FU.pcap","")
File "/usr/lib/python2.7/site-packages/scapy/utils.py", line 466, in wrpcap
PcapWriter(filename, *args, **kargs).write(pkt)
File "/usr/lib/python2.7/site-packages/scapy/utils.py", line 646, in write
self._write_packet(pkt)
File "/usr/lib/python2.7/site-packages/scapy/utils.py", line 688, in _write_packet
sec = int(packet.time)
AttributeError: 'str' object has no attribute 'time'
目前,我可以使用 try and except
来抑制错误,但无法抑制警告。
代码
from scapy.all import *
try:
wrpcap("my.pcap","")
except:
pass
警告仍然存在:
WARNING: PcapWriter: unknown LL type for str. Using type 1 (Ethernet)
如何从 python 代码中抑制它?
最佳答案
Python 在标准库中有一个内置方法来抑制警告:
import warnings
warnings.simplefilter("ignore", Warning)
您可以阅读有关警告库的更多信息 in the docs .
编辑
看起来 scapy
使用 warnings
库来生成它。相反它logs them to a logger名为 scapy.runtime
,级别为 warning
。显然有一些默认的日志记录配置将其回显到 stdout
。您可以为 scapy.runtime
添加自己的日志处理程序来抑制它们。
关于Python 在使用 Scapy 创建空 pcap 文件时抑制警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736188/