<分区>
是否有可能将 Packet.show()
给我的表示放入字符串变量中?
像这样
representation = somePacket.show()
print representation # will print nothing
所以我可以存储它以备后用,并在需要时打印出来?
<分区>
是否有可能将 Packet.show()
给我的表示放入字符串变量中?
像这样
representation = somePacket.show()
print representation # will print nothing
所以我可以存储它以备后用,并在需要时打印出来?
最佳答案
.show()
只是打印到标准输出。您需要将 sys.stdout
替换为可以保存写入字符串的对象。
例如,在下面的例子中,io.BytesIO
用于捕获写入的字符串:
>>> import sys
>>> from io import BytesIO
>>> from scapy.all import Ether, IP, ICMP, Net
>>> packets = Ether()/IP(dst=Net("google.com/30"))/ICMP()
>>> old_stdout, sys.stdout = sys.stdout, BytesIO()
>>> try:
... packets.show()
... output = sys.stdout.getvalue() # retrieve written string
... finally:
... sys.stdout = old_stdout # Restore sys.stdout
...
>>> output[:10]
'###[ Ether'
关于python - 将 Packet.show() 表示形式放入字符串变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500735/