【发布时间】:2015-10-21 00:35:49
【问题描述】:
我需要从Canada Government 的公共地理数据库在我的 PC(Windows 操作系统)上的文件夹“C:\DEMDownload”中下载几个(数字地球模型)zip 文件。
当我在ftp.retrbinary('RETR %s' %file, open(local_file, 'wb').write) 行运行我的代码时,我收到以下错误消息
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Python27\lib\ftplib.py", line 414, in retrbinary
conn = self.transfercmd(cmd, rest)
File "C:\Python27\lib\ftplib.py", line 376, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "C:\Python27\lib\ftplib.py", line 339, in ntransfercmd
resp = self.sendcmd(cmd)
File "C:\Python27\lib\ftplib.py", line 249, in sendcmd
return self.getresp()
File "C:\Python27\lib\ftplib.py", line 224, in getresp
raise error_perm, resp
error_perm: 550 Failed to open file.
第二。是否可以避免编写 available_days 列表并创建所有要下载的 zip 文件的列表
import os, ftplib
destdir='C:\DEMDownload'
ftp = ftplib.FTP('ftp2.cits.rncan.gc.ca')
ftp.login('anonymous', '')
available_days= ['001k11.zip',
'001k12.zip',
'001k13.zip',
'001k14.zip',
'001k15.zip',
'001l13.zip',
'001l14.zip',
'001l16.zip',
'001m01.zip',
'001m02.zip',
'001m03.zip',
'001m04.zip',
'001m05.zip',
'001m06.zip',
'001m07.zip',
'001m08.zip',
'001m09.zip',
'001m10.zip',
'001m11.zip',
'001m12.zip',
'001m13.zip',
'001m14.zip',
'001m15.zip',
'001m16.zip',
'001n02.zip',
'001n03.zip',
'001n04.zip',
'001n05.zip',
'001n06.zip',
'001n07.zip',
'001n10.zip',
'001n11.zip',
'001n12.zip',
'001n13.zip',
'001n14.zip',
'001n15.zip']
hdfs = list()
for day in available_days :
file = available_days[available_days.index(day)]
print 'file=', file
local_file = os.path.join(destdir, file)
ftp.retrbinary('RETR %s' %file, open(local_file, 'wb').write)
hdfs.append(os.path.abspath(local_file))
ftp.cwd('..')
ftp.quit()
【问题讨论】:
-
您想下载所有可用的 zip 文件或特定的 zip 文件吗?我在根目录中看到多个目录。
-
我需要下载所有可用的 zip 文件
-
001,002,003,...每个目录下的所有zip文件?
-
是的。我知道它们有很多文件(例如所有加拿大的所有 DEM 模型。俄罗斯之后的第二大国家)
-
好的,我遇到了同样的错误。你读过这个吗:*.com/questions/5230966/…我会尽量让它适合你的情况。一旦它工作,你可以遍历每个目录。
标签: python ftp runtime-error download