如何使用完整的FTP路径下载FTP文件?

时间:2013-10-12 09:14:26

标签: python file-io ftp ftplib

在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())。之后,您需要声明文件名以下载驻留在当前目录中的文件。 如何使用完整路径/链接直接下载文件?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

此解决方案使用urllib模块中的urlopen函数。 urlopen函数可以让你下载ftp和http urls。我喜欢使用它,因为你可以连接并获取一行中的所有数据。最后三行从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)