Подключение интерфейса GUI с асинхронной (ых) операцией ftp

Попытка реализовать диалоговое окно прогресса для загрузки файлов, которые выглядят как перекрестные ссылки между диалогом загрузки IE и диалогом загрузки Firefox с библиотекой GUI python в Windows.

  1. Какие асинхронные (S) FTP-библиотеки существуют для python? В идеале я должен иметь возможность выполнять возобновление загрузки файлов и отслеживать ход каждой параллельной загрузки файлов.
  2. Если я выполняю загрузку каждого файла в отдельном процессе каждый, как бы получить статус загрузки и отобразить его в диалоговом окне индикатора выполнения?

4 Solutions collect form web for “Подключение интерфейса GUI с асинхронной (ых) операцией ftp”

«ftplib» – это стандартная библиотека ftp, встроенная в Python. В Python 2.6 у него был параметр обратного вызова, добавленный к методу, используемому для загрузки.

Этот обратный вызов – это функция, которую вы предоставляете библиотеке; он вызывается один раз для каждого блока, который завершен.

Ваша функция может отправить сообщение в графический интерфейс (возможно, в другом потоке / процессе, используя стандартную межпоточную или межпроцессную связь), чтобы сообщить ему обновить индикатор выполнения.

Справка

Если передача данных выполняется в отдельном потоке из графического интерфейса пользователя, вы можете использовать wx.CallAfter (), когда вам нужно обновить индикатор выполнения из потока передачи данных.

Во-первых, использование CallAfter () является обязательным, поскольку функция wxPython не может быть вызвана из дочерних потоков.

Во-вторых, это отменит выполнение переноса данных из графического интерфейса в основном потоке.

Обратите внимание, что CallAfter () работает только для потоков, а не для отдельных процессов. В этом случае использование пакета многопроцессорности должно помочь.

Если вы хотите, чтобы полный пример использования потоков и событий для обновления вашего графического интерфейса с помощью длинных задач с использованием WxPython, посмотрите эту страницу . Этот учебник очень полезен и помог мне выполнить подобную программу, чем ваша.

Если вы не можете использовать ftplib Python 2.6, есть компания, предлагающая коммерческое решение.

CKFTP2 Chilkat стоит несколько сотен долларов, но обещает работать с Python 2.5 и предлагает вызов функции get_AsyncBytesSent (), который возвращает необходимую вам информацию. (Я не видел обратного вызова, но он может это предложить).

Я не использовал этот продукт.

Также подумайте, что если FTP окажется слишком жестким / дорогостоящим, вы всегда можете переключиться на HTTP-загрузки. У Chilkat есть бесплатная библиотека загрузки HTTP / HTTPS.

  • Python - Как проверить, используется ли файл другим приложением?
  • Ошибка в live mp3 ffmpeg encoder с использованием python
  • os.listdir удаляет характерный акцент
  • Python 2.7 32-bit install for Win 7: Нет разделов реестра.
  • Конструктор TypeError возвратил NULL при импорте pyplot в ssh
  • Не удается запустить PhantomJS с Python в Windows 7
  • Обнаружение щелчков мыши в окнах с использованием python
  • Компилятор HTMLHelp отлично работает из командной строки, но не запускается из сценария или пакетного файла
  • Python - лучший язык программирования в мире.