我的函数运行URLcrazy,我发现它没有将输出存储到任何变量中,因此我无法弄清楚。显示的tmp变量未将输出存储到该列表中。我如何解决此问题以存储执行的数据。

def run_urlcrazy():
   tmp = []
    for domain in grab_domains():
      np = os.system("urlcrazy " + domain)
      tmp.append(np)
   return tmp


我试图让URLcrazy的输出针对循环中的所有域运行,并能够对ouptut进行切片。我认为URLcrazy输出数据的方式无法在其他函数中格式化数据。我需要能够将信息存储在数据库中。

最佳答案

os.system不返回已执行命令的输出,仅返回退出代码(信号成功或错误)。

我相信你想要subprocess.Popen

import subprocess

def run_urlcrazy():
    tmp = []
    for domain in grab_domains():
        proc = subprocess.Popen(["urlcrazy", domain], stdout=subprocess.PIPE)
        (out, err) = proc.communicate()
        tmp.append(out)
   return tmp


另外,如果您只想要输出并且不希望检查错误,则可以使用subprocess.check_output

out = subprocess.check_output(['urlcrazy', domain])

10-04 20:44