从python脚本运行秃鹰

时间:2019-12-01 07:20:24

标签: python subprocess

我正在尝试找到一种在python脚本中运行秃鹰(在python项目中找到未使用的代码)的方法。
秃documentation文档可以在这里找到: https://pypi.org/project/vulture/

有人知道怎么做吗?

我知道使用秃鹰的唯一方法是通过shell命令。 我试图使用模块子进程从脚本中调整Shell命令,如下所示:

process = subprocess.run(['vulture', '.'], check=True, 
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True)

尽管如此,我与运行shell命令“ vulture”具有相同的效果。

但它不起作用。

有人可以帮忙吗? 谢谢

2 个答案:

答案 0 :(得分:0)

我看到您想捕获控制台上显示的输出:

下面的代码可能有帮助:

import tempfile
import subprocess

def run_command(args):
    with tempfile.TemporaryFile() as t:
        try:
            out = subprocess.check_output(args,shell=True, stderr=t)
            t.seek(0)
            console_output = '--- Provided Command: --- ' + '\n' + args + '\n' + t.read() + out + '\n'
            return_code = 0
        except subprocess.CalledProcessError as e:
            t.seek(0)
            console_output = '--- Provided Command: --- ' + '\n' + args + '\n' + t.read() + e.output + '\n'
            return_code = e.returncode
        return return_code, console_output

您的预期输出将显示在console_output

链接:

https://docs.python.org/3/library/subprocess.html

答案 1 :(得分:0)

这里有秃dev开发者。

Vulture软件包公开了一个名为scavenge的API,该API在解析命令行参数(在vulture.main中)后在内部用于运行分析。

它包含一个Python文件/目录列表。对于每个目录,Vulture都会分析所有包含的* .py文件。

要分析当前目录:

import vulture
v = vulture.Vulture()
v.scavenge(['.'])

如果只想将结果打印到stdout,则可以致电:

v.report()

但是,也可以对Vulture的结果执行自定义分析/过滤。方法vulture.get_unused_code返回一个vulture.Item对象的列表-这些对象包含未使用代码的名称,类型和位置。

为了这个答案,我只打印所有未使用对象的名称:

for item in v.get_unused_code():
     print(item.name)

有关更多信息,请参见-https://github.com/jendrikseipp/vulture