Python:通过字符串中的名称访问结构字段

标签 python ip structure field scapy

在 Scapy 中,我想比较任意两个数据包 ab 之间的多个 header 字段。这个字段列表是预定义的,比如说:

fieldsToCompare = ['tos', 'id', 'len', 'proto'] #IP header

通常我会单独做:

if a[IP].tos == b[IP].tos:
   ... do stuff...

有什么方法可以从字符串列表中访问这些数据包字段,包括每个字符串的名称?喜欢:

for field in fieldsToCompare:
    if a[IP].field == b[IP].field:
         ... do stuff...

最佳答案

您可以使用 getattr() .这些行是等价的:

getattr(x, 'foobar')
x.foobar

setattr()是它的对应物。

关于Python:通过字符串中的名称访问结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16060625/

相关文章:

linux - IPTables发送的TCP_RST段的源地址

java - 使用Java获取外部IP地址

c - 在 C 中的结构内定义结构数组

python - 使用蒙版对图像的不同部分应用不同的阈值

c# - 使用 IPv6 的 IPAddress.HostToNetworkOrder

python - 将嵌套的命名元组列表展平为字典列表

c - 为什么我不能在 C 中初始化包含函数指针的结构数组?

php - 使用 PHP、MySQL 和 mod_rewrite 从数据库获取页面

LAB和灰度之间的Python OpenCV色彩空间差异

python - 改变批量大小的 Tensorflow 数据集计算训练期间的测试损失