2

在 Python 中使用 ftplib,您可以下载文件,但您似乎只能使用文件名(而不是完整的文件路径)。以下代码成功下载了请求的代码:

import ftplib
ftp=ftplib.FTP("ladsweb.nascom.nasa.gov")
ftp.login()
ftp.cwd("/allData/5/MOD11A1/2002/001")
ftp.retrbinary('RETR MOD11A1.A2002001.h00v08.005.2007079015634.hdf',open("MOD11A1.A2002001.h00v08.005.2007079015634.hdf",'wb').write)

如您所见,首先ftp.login()建立站点登录 ( ),然后设置当前目录 ( ftp.cwd())。之后,您需要声明文件名以下载驻留在当前目录中的文件。如何使用完整路径/链接直接下载文件?

4

2 回答 2

2
import ftplib

ftp = ftplib.FTP("ladsweb.nascom.nasa.gov")
ftp.login()

a = 'allData/5/MOD11A1/2002/001/MOD11A1.A2002001.h00v08.005.2007079015634.hdf'
fhandle = open('ftp-test', 'wb')
ftp.retrbinary('RETR ' + a, fhandle.write)
fhandle.close()
于 2013-10-12T09:59:29.033 回答
1

此解决方案使用urllib模块中的 urlopen 函数。urlopen 函数可以让你下载 ftp 和 http url。我喜欢使用它,因为您可以在一行中连接并获取所有数据。最后三行从 url 中提取文件名,然后将数据保存到该文件名。

from urllib import urlopen
url = 'ftp://ladsweb.nascom.nasa.gov/allData/5/MOD11A1/2002/001/MOD11A1.A2002001.h00v08.005.2007079015634.hdf'
data = urlopen(url).read()
filename = url.split('/')[-1]
with open(filename, 'wb') as f:
    f.write(data)
于 2013-10-13T08:51:41.760 回答