Python 2.7.Как загрузить тот же файл дважды? (urlretrieve issue)
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")
Первая загрузка идет правильно, но второй не удается:
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
на Python 3 (с соответствующей версией urlretrieve), это работает, как ожидалось - обе загрузки удалось.
Это способ разрешить это на Python 2.7?
(Конечно, вы можете сказать, что загрузка двух файлов одинаково не имеет смысла. Я согласен. Я столкнулся с этой проблемой при тестировании модуля, пытающегося загрузить файл с разными параметрами (поскольку он не имеет ничего общего с проблема, я упростил пример кода), и я просто был удивлен этим странным поведением)
Вы не указываете файл назначения в 'urlretrieve()', так что это возможно во второй раз, когда он не работает, потому что файл уже существует? См. Http://stackoverflow.com/questions/37455933/the-default-path-of-python-urlretrieve-downloading-file-via-http – sashoalm
Это не проблема. Я редактировал вопрос, добавляя разные файлы назначения. Результат тот же. – Dado