我已经编写了Python代码,可以在Scappy API下调用:
sendp(packet, iface=adapter_name)
代码工作正常,但问题在于它在控制台上的以下行中打印,在该行中,执行上述命令的次数为多次:
Sent 1 packets.
.
我需要隐藏控制台输出,所以我尝试:
old_stdout = sys.stdout
sys.stdout = log_file_name
但是我得到了例外:
sendp(packet, iface=adapter_name)
File "C:\Python36\lib\site-packages\scapy\sendrecv.py", line 315, in sendp
verbose=verbose, realtime=realtime, return_packets=return_packets)
File "C:\Python36\lib\site-packages\scapy\sendrecv.py", line 289, in __gen_send
print("\nSent %i packets." % n)
AttributeError: 'str' object has no attribute 'write'
如何实现目标?
答案 0 :(得分:0)
如果您要重定向到文件,则有一个先前回答的问题: Redirect stdout to a file in Python?
以下示例(从python文档)重定向到内存字符串:
import io
from contextlib import redirect_stdout
f = io.StringIO()
with redirect_stdout(f):
help(pow)
s = f.getvalue()
后面的示例(如果您只是想抑制sys.stdout),则尝试
了解它是如何工作的:print将尝试访问write
的{{1}}方法,因此我将其替换为具有不执行任何操作的write方法的类。
sys.stdout