在函数python中使用for循环变量

时间:2012-12-17 19:16:37

标签: python variables for-loop

我正在构建一个执行以下操作的应用程序:

  • 从.txt文件中获取主机并将其放入列表
  • 下载每个网站的标题并将其放入另一个列表
  • 将包含特定单词的行打印到包含时间戳,特定行和属于该行的URL的日志文件中。

一切实际上工作正常,但我似乎无法传递正在检查其他功能的网址,以便可以使用它。

此链接中的代码:http://pastebin.com/630FrspN

实际上会在日志文件中的每个条目中打印相同的URL ...如果我将日志文件(websiteheaders,url)放入for循环中,它会起作用,但它会在日志文件中打印一个条目,就像我一样多次我的主机文件中的网址。

我不知何故需要传递" url"在for循环中检查日志文件函数...

Probaly一个简单的答案,但我似乎无法找到它。提前谢谢。

编辑:我认为以下代码是最相关的。

def headerophalen(websites):

    for url in websites:
        try:
            response = urllib2.urlopen(url)
            headers = str(response.info())
            websiteheaders.extend(headers.splitlines())
        except urllib2.HTTPError, error:
            print "Error opening URL: ", url, "HTTP Errorcode: ", error.code
            continue

    logfile(websiteheaders, url)

2 个答案:

答案 0 :(得分:3)

您需要在for循环内记录数据。你可以在他的回答中建立一个balldotballs建议的dict,但似乎只是写入你的日志,每次迭代都更有意义,除非你需要将处理过的信息用于记录之外的事情。

def headerophalen(websites):

    for url in websites:
        try:
            response = urllib2.urlopen(url)
        except urllib2.HTTPError, error:
            print "Error opening URL: ", url, "HTTP Errorcode: ", error.code
        else:
            logfile(url, str(response.info()).splitlines())

答案 1 :(得分:2)

当您致电logfile(websiteheaders, url)时,网址将只是您网站数组中的最后一个网址,因此这是唯一一个将记录在您的日志文件中的网址。如果我是你,我会将url->标题信息保存在字典中并将其传递给您的日志文件。

尝试类似:

headers = {}

然后在你的循环中使用:

response = urllib2.urlopen(url)
headerlist = str(response.info())
headers[url] = headerlist.splitlines()

现在你有一个字典,每个网址都有一个标题列表。您可以将其传递给日志文件功能,然后根据需要进行记录。

logfile(headers)

阅读字典 http://docs.python.org/2/tutorial/datastructures.html

编辑:修复我的语法和拼写