如何获取函数的输出并用作另一个函数python的输入?

时间:2017-07-07 18:02:20

标签: python mysql

更具体地说,我的函数抓取了我的数据库表中的所有域并返回它们。我想知道如何将这些域输入到另一个函数中,该函数将为该表中的每个域运行Kali Linux工具URLcrazy。

例如我输出这些的函数:

google.com
yahoo.com
以下是功能:

def grab_domains():
    try:
        db = pymysql.connect(host="localhost",
                         user="root", passwd="root",
                         db="typosquat")
except ConnectionAbortedError as e:
    print(e, "\n")

temp = ""
cursor = db.cursor()
cursor.execute('SELECT name From domains')
for rows in cursor.fetchall():
    for entries in rows:
        temp += entries
        domains = entries[0:]
        print(domains)

return temp

以下是输出:

google.com
yahoo.com

如何编写另一个将在每个域上运行脚本URLcrazy的函数?假设所有脚本都在同一文件位置。

这就是我所拥有的一切,我无法弄清楚如何为每个域运行它,只知道如何为单个输出。

def run_urlcrazy():
    np = os.system("urlcrazy " + grab_domains())
    print(np)
    return np

如何让这个函数为每个域运行URLcrazy?^^

这是我关于堆栈溢出的第一篇文章让我知道我可以做些什么来改进它并尽可能帮助我解决问题!感谢

1 个答案:

答案 0 :(得分:2)

你需要一个循环:

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

我建议使用for循环,因为它可以有效地迭代函数返回的任何内容。

您还需要对grab_domains()功能稍作修改:

temp = []
cursor = db.cursor()
cursor.execute('SELECT name From domains')
for rows in cursor.fetchall():
    for entries in rows:
        domains = entries[0:]
        temp.extend(domains)

return temp

现在,您的函数返回一个域列表。你可以迭代这个。