Рубрики
Без рубрики

Скачать данные с FTP-сервера с Python

Недавно мне нужно было загрузить последнюю версию программного обеспечения с FTP-сервера, а затем установить его в … Помечено FTP, Python, скачать, автоматизация.

Недавно мне нужно было загрузить последнюю версию программного обеспечения с FTP-сервера, а затем установить его в тестируемую машину.

Я думаю, что может быть кто-то, кто должен будет знать это Итак, сегодня я собираюсь поделиться с вами, как скачать данные с FTP-сервера с Python.

Следующий пост может быть, как установить приложение автоматически.

I. Какой FTP-сервер:

Возможно, вы захотите прочитать Это Но в основном FTP-сервер – это где вы храните файлы

II.FTPLIB в Python:

Возможно, вы захотите перейти к официальному документу для FTPLIB в здесь

Мы собираемся использовать FTPLIB для взаимодействия с FTP-сервером

III.real World Пример: Ниже приведен образец рабочий сервер FTP

Сценарий это, нам нужно перейти на этот сервер, найти последнюю версию файла и загрузить ее.

Если последняя версия файла уже загружена, не нужно загружать ее снова.

1. Сохраните имя загруженного версии в файл yaml:

Образец файла конфигурации, где у нас есть coccoc_dev_version

#configurations.yaml


--------
coccoc_dev_version: 79.0.3945.98
jenkins:
  admin_password: '123456'
  admin_username: admin
  domain: http://10.0.12.96:8080


Самостоятельные съемки для работы с YAML-файлами

class YamlUtils:

    def __new__(cls):

        if not hasattr(cls, 'instance'):
            cls.instance = super(YamlUtils, cls).__new__(cls)

        return cls.instance

    def read_data_from_file(self, file):
        with open(file) as stream:
            try:
                return yaml.safe_load(stream)
            except yaml.YAMLError as exc:
                print(exc)

    def write_data_to_file(self, loaded, file):
        with open(file, 'wb') as stream:
            try:
                return yaml.safe_dump(loaded, stream, default_flow_style=False
                                      , explicit_start=True, allow_unicode=True, encoding='utf-8')
            except yaml.YAMLError as exc:
                print(exc)

Переопределить последнюю версию файла в YAML:

yaml_made_utils = YamlUtils()
configuration_info = None
configuration_path = '/resources/configurations.yaml'


def get_configurations_info():
    if configuration_info is None:
        return yaml_made_utils.read_data_from_file(os.getcwd() + configuration_path)
    else:
        return configuration_info


class CocCocConfigs:
    COCCOC_DEV_VERSION = get_configurations_info()['coccoc_dev_version']

    @staticmethod
    def update_coccoc_dev_version(coccoc_version):
        data = get_configurations_info()
        data['coccoc_dev_version'] = coccoc_version
        return yaml_made_utils.write_data_to_file(data, os.getcwd() + configuration_path)

2.Нажмите последнюю версию файла, если она еще не загружена

def download_latest_coccoc_dev_installer():
    coccoc_installer_name = "standalone_coccoc_en.exe"
    from ftplib import FTP
    with FTP('browser3v.dev.itim.vn') as ftp:
        ftp.login('anonymous', '')
        ftp.cwd('corom')
        folders_list = ftp.nlst()
        coccoc_download_folder_list = get_list_coccoc_installer_dirs(folders_list)
        latest_coccoc_download_dir = coccoc_download_folder_list[-1]
        from configs.yaml_configs import CocCocConfigs
        if CocCocConfigs.COCCOC_DEV_VERSION not in latest_coccoc_download_dir:
            ftp.cwd(f"{latest_coccoc_download_dir}/installers")
            try:
                ftp.retrbinary("RETR " + coccoc_installer_name,
                               open(f"C:\\coccoc-dev\\{coccoc_installer_name}", 'wb').write)
            except:
                print(f"Error download coccoc binary for {coccoc_installer_name}")
            return latest_coccoc_download_dir
        else:
            return "Already latest"

Обратите внимание, что нам нужно предоставить имя пользователя и пароль вместе с именем хоста FTP, такими как:

with FTP('browser3v.dev.itim.vn') as ftp:
        ftp.login('anonymous', '')

3. Main Функция для загрузки файла и обновленное имя версии в файл конфигураций:

def main():
    coccoc_version = download_latest_coccoc_dev_installer()
    if coccoc_version not in "Already latest":
        CocCocConfigs.update_coccoc_dev_version(coccoc_version)
    else:
        pass


if __name__ == "__main__":
    main()

Вы можете оформить заказ полный исходный код в GitHub в здесь

Надеюсь это поможет.

Мир!!!

Примечания: если вы чувствуете, что этот блог поможет вам и хотите показать признательность, не стесняйтесь падать по:

Это поможет мне способствовать более ценному содержанию.

Оригинал: “https://dev.to/cuongld2/download-data-from-ftp-server-with-python-5dmb”