我看过不同的软件使用编译的程序作为"模块&#34 ;;一个例子是使用aircrack套件的wifite。
同样,我需要在我的python程序中实现tshark,但不需要通过源代码工作(主要是因为我希望软件是模块化的并且将tshark留作简单的依赖)。 / p>
最好的方法是什么?我不会简单地打电话给程序,因为我觉得它不是pythonic。
答案 0 :(得分:2)
出于您的目的,您可以使用tshark周围的现有包装器之一,例如KimiNewt/pyshark。
在其他情况下,您可能需要将该工具重新编译为库,然后为其提供绑定以在Python中使用。更多关于documentation的内容。
答案 1 :(得分:2)
一般而言,标准UNIX程序提供的通用API包括:
subprocess
模块)。传统上,UNIX程序通过这些方式相互通信 - 从stdin读取输入(除非在命令行中另有指定),写入stdout,登录到stderr等。
某些程序可能提供库接口或基于套接字的接口,但这些只能根据具体情况提供。
如果 尝试与用C语言编写的提供库接口的软件进行交互,请参阅the ctypes
standard-library module。