Python 2.7。同じファイルを2回ダウンロードするには? (urlretrieveの問題)
from urllib import urlretrieve
urlretrieve("ftp://ftp.wwpdb.org/pub/pdb/data/structures/divided/mmCIF/27/127d.cif.gz", "file1")
urlretrieve("ftp://ftp.wwpdb.org/pub/pdb/data/structures/divided/mmCIF/27/127d.cif.gz", "file2")
最初のダウンロードが正常に行くが、2番目に障害が発生した:
Traceback (most recent call last):
File "C:/Jacek/Python/untitled/test2.py", line 3, in <module>
urlretrieve("ftp://ftp.wwpdb.org/pub/pdb/data/structures/divided/mmCIF/27/127d.cif.gz", "file2")
File "C:\Python27\lib\urllib.py", line 98, in urlretrieve
return opener.retrieve(url, filename, reporthook, data)
File "C:\Python27\lib\urllib.py", line 245, in retrieve
fp = self.open(url, data)
File "C:\Python27\lib\urllib.py", line 213, in open
return getattr(self, name)(url)
File "C:\Python27\lib\urllib.py", line 558, in open_ftp
(fp, retrlen) = self.ftpcache[key].retrfile(file, type)
File "C:\Python27\lib\urllib.py", line 906, in retrfile
conn, retrlen = self.ftp.ntransfercmd(cmd)
File "C:\Python27\lib\ftplib.py", line 334, in ntransfercmd
host, port = self.makepasv()
File "C:\Python27\lib\ftplib.py", line 312, in makepasv
host, port = parse227(self.sendcmd('PASV'))
File "C:\Python27\lib\ftplib.py", line 830, in parse227
raise error_reply, resp
IOError: [Errno ftp error] 200 TYPE is now 8-bit binary
(urlretrieveの該当するバージョンで)のpython 3オン
これは期待通りに動作します - 両方のダウンロードが成功しました。
これをPython 2.7で解決する方法はありますか?
(もちろん、同じファイルを2回ダウンロードすることは意味をなさないと言うこともできますが、私は同意します)モジュールをテストしているときにこのパラメータを変更してファイルをダウンロードしようとしました。問題は、私は例のコードを簡素化)し、私はちょうどurlretrieve for Python2のドキュメントからこの奇妙な振る舞い)
あなたは 'urlretrieve()'で目的地ファイルを指定していないので、ファイルがすでに存在するために2度目に失敗する可能性がありますか? http://stackoverflow.com/questions/37455933/the-default-path-of-python-urlretrieve-downloading-file-via-http – sashoalm
を参照してください。それは問題ではありません。異なる宛先ファイルを追加する質問を編集しました。結果は同じです。 – Dado