使用python从不同目录一次下载数据的代码

时间:2019-02-06 17:36:09

标签: python download ftp

我是python的新手。 我想通过代码从以下URL下载数据:“ ftp://cddis.nasa.gov/gnss/products/ionex/”。但是,我想要的文件具有以下格式:“ codgxxxx.xxx.Z”。 所有这些文件都在每年(enter image description here)内,如下所示:enter image description here。 如何使用python下载这些文件?。

直到现在,我一直在将wget与以下代码一起使用:wget ftp://cddis.nasa.gov/gnss/products/ionex/2008/246/codg0246.07i.Z“,用于每个文件,但很乏味。

有人可以帮我吗!!

谢谢

1 个答案:

答案 0 :(得分:0)

由于您知道FTP服务器中的结构,因此无需使用ftplib即可轻松完成此操作。

从服务器上实际检索目录列表(例如this question

)会更清洁

(尽管我似乎无法连接到该美国国家航空航天局网址)

我建议阅读here,以获取有关如何实际执行FTP下载的更多信息。

但是类似的事情可能起作用。 (完整披露:我尚未对其进行测试)

import urllib
YEARS_TO_DOWNLOAD = 12
BASE_URL = "ftp://cddis.nasa.gov/gnss/products/ionex/"
FILE_PATTERN = "codg{}.{}.Z"
SAVE_DIR = "/home/your_name/nasa_ftp/"
year = 2006
three_digit_number = 0

for i in range(0, YEARS_TO_DOWNLOAD):
    target = FILE_PATTERN.format(str(year + i), str(three_digit_number.zfill(3))
    try:
        urllib.urlretrieve(BASE_URL + target, SAVE_DIR + target)
    except urllib.error as e:
        print("An error occurred trying to download {}.\nReason: {}".format(target, 
              str(e))
    else:
        print("{} -> {}".format(target, SAVE_DIR + target))

print("Download finished!")