从函数内部调用Python函数

时间:2012-07-14 20:38:58

标签: python

我试图从process()中调用two_byte_proc(payload,offset),但它不会写入输出文件out_buf。偏移量或有效负载的输出可能包含None,因此应跳过这些迭代并使用下一个数据包重新启动过程函数。

def process():
    pkts = sniff(offline="infile.pcap",filter="tcp")
    out_buf = open("outfile.bin","wb")

    for pkt in pkts:
        offset = hexdump(str(pkt.payload)[:2])
        payload = hexdump(pkt.payload)

        if offset or payload is None:
            pass
        else:
            out_buf.write(two_byte_proc(payload,offset))

process()

1 个答案:

答案 0 :(得分:4)

表达式offset or payload is None始终为True;也许你的意思是:

if offset is None or payload is None:

代替。

由于你'传递'如果该表达式为True,你也可以将其反转:

if offset is not None and payload is not None:
    out_buf.write(two_byte_proc(payload, offset))

我怀疑offsetpayload是长度为>的字符串。 0或无,在这种情况下可以进一步简化为:

if offset and payload:
    out_buf.write(two_byte_proc(payload, offset))

最后但同样重要的是,您需要确保two_byte_proc(或编辑后four_byte_proc)实际返回要写入out_buf的内容。例如,如果它返回的是一个空字符串,您将看不到任何结果。