我的函数运行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])