Код для загрузки данных сразу из разных каталогов с использованием Python - PullRequest
0 голосов
/ 06 февраля 2019

Я новичок в питоне.Я хочу скачать через код данные с этого URL: " ftp: //cddis.nasa.gov/gnss/products/ionex/".Однако файлы, которые я хочу, имеют этот формат: «codgxxxx.xxx.Z».Все эти файлы находятся внутри каждого года ( введите описание изображения здесь ), как показано здесь: введите описание изображения здесь .Как я могу скачать только эти файлы, используя python?.

До сих пор я использовал wget с этим кодом: wget ftp: //cddis.nasa.gov/gnss/products/ionex/2008/246/codg0246.07i.Z ", для каждого из файлов, но утомительно.

Может кто-нибудь помочь мне, пожалуйста !!.

Спасибо

1 Ответ

0 голосов
/ 06 февраля 2019

Поскольку вы знаете структуру на FTP-сервере, это может быть довольно легко осуществить без использования ftplib.

Было бы чище на самом деле получить список каталогов с сервера, например этот вопрос

(мне не удается подключиться к этому URL-адресу НАСАхотя)

Я бы рекомендовал прочитать здесь , чтобы узнать больше о том, как на самом деле выполнять загрузку с 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!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...