【问题标题】:How to download FTP file using its full FTP path?如何使用完整的 FTP 路径下载 FTP 文件?
【发布时间】:2013-10-12 09:14:26
【问题描述】:

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

【问题讨论】:

    标签: python file-io ftp ftplib


    【解决方案1】:
    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秒左右。
    • 但是当我输入变量a而不是“ftp-test”时,它不起作用。
    • +1。 @ArditSulce 使用type(your_variable)检查您发送的内容@
    • @Jacek 和 mislav:不,它不管用 Python 2 还是 3 都不起作用。试着用 a 替换 'ftp-test' 你会相信我的。
    • 您不能写入磁盘上不存在的目录。首先,您必须创建所需的目录结构。使用蟒蛇os.path.exists + os.makedirs
    【解决方案2】:

    此解决方案使用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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2011-10-23
      • 1970-01-01
      相关资源
      最近更新 更多