1

私はPythonスクリプトを作成しました。このスクリプトは、テキストファイルを読み取ってからURLに移動し、テキストファイルの拡張子をURLに追加します。問題は、ファイルの読み取りが完了する前にスクリプトが停止し続けることです。理由がわかりません。

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) 
4

3 に答える 3

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
于 2012-05-02T23:59:41.083 に答える
2

あなたのコードは次のことをします:

  1. ファイルから1行を読み取ります(f.readline())。
  2. その行()の各文字についてfor x in f.readline()、追加の行()を読み取り、a = f.readline()処理します。

したがって、ファイルの最初の行の文字数と同じ数の行のみが処理され、最初の行は処理されません。

おそらく、そのループを次のように記述したいと思うでしょう。

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) 
于 2012-05-03T00:13:14.340 に答える
0

おそらく、最初は次のようにすべての行を読んでいます。

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

for line in lines:
    do something
于 2012-05-03T00:03:48.773 に答える