为什么我的代码会一直停止?

时间:2012-05-02 23:57:06

标签: python python-2.7 urllib

我制作了一个Python脚本,它读取文本文件然后转到网址,并将文本文件中的扩展名添加到网址中。问题是脚本在读完文件之前一直停止。我无法弄清楚原因。

import urllib
f = open("extension/1.txt", 'r')

for x in f.readline():    
    a = f.readline()
    url = "http://www.link.com/whatever/%s" % a
    print url
    urllib.urlretrieve(url, a) 

3 个答案:

答案 0 :(得分:6)

通过调用for x in f.readline():,您将通过作为可迭代文件的第一行string,然后通过第一行中的每个字符抓取一个新行a = f.readline()。我不认为这是你的意图。

file对象f本身是可迭代的,因此您只需执行以下操作:

for line in f:
    value = line.rstrip('\n')
    url = "http://www.link.com/whatever/%s" % value
    print url
    urllib.urlretrieve(url, value)  # Not sure why you want to send value (your a) here

答案 1 :(得分:2)

您的代码执行以下操作:

  1. 从文件(f.readline())中读取一行。
  2. 对于该行中的每个字符(for x in f.readline()),请阅读其他行(a = f.readline())并对其进行处理。
  3. 因此,它只会处理与文件第一行中的字符一样多的行,并且永远不会处理第一行。

    您可能希望将该循环写为:

    with open("extension/1.txt") as f:
        for a in f:
            a = a.strip()
            url = "http://www.link.com/whatever/%s" % a
            print url
            urllib.urlretrieve(url, a) 
    

答案 2 :(得分:0)

也许最初是这样阅读所有的行:

fp = open(the_file)
lines = fp.readlines()
fp.close()

for line in lines:
    do something