1

Windows で Python GUI ライブラリを使用して、IE ダウンロード ダイアログFirefox ダウンロード ダイアログのクロスのように見える、ファイル アップロード用の進行状況ダイアログ ウィンドウを実装しようとしています。

  1. Python にはどのような非同期 (S)FTP ライブラリがありますか? 理想的には、ファイルのアップロードを再開し、各並行ファイル アップロードの進行状況を追跡できるようにする必要があります。
  2. 各ファイルのアップロードを個別のプロセスで実行している場合、アップロード ステータスを取得して進行状況バー ダイアログに表示するにはどうすればよいですか?
4

4 に答える 4

1

"ftplib" は、Python に組み込まれている標準の ftp ライブラリです。Python 2.6 では、アップロードに使用されるメソッドにコールバック パラメータが追加されていました。

そのコールバックは、ライブラリに提供する関数です。完了するブロックごとに 1 回呼び出されます。

関数は、GUI にメッセージを送信して (おそらく、標準のスレッド間またはプロセス間通信を使用して別のスレッド/プロセスで)、進行状況バーを更新するように指示できます。

参照

于 2008-10-16T03:42:07.860 に答える
1

データ転送が GUI とは別のスレッドで実行される場合、データ転送スレッドから進行状況バーを更新する必要があるときはいつでも wx.CallAfter() を使用できます。

まず、wxPython 関数は子スレッドから呼び出すことができないため、CallAfter() の使用は必須です。

第 2 に、これにより、データ転送の実行がメイン スレッドの GUI から切り離されます。

CallAfter() はスレッドに対してのみ機能し、個別のプロセスに対しては機能しないことに注意してください。その場合、 multiprocessing パッケージを使用すると役立ちます。

于 2008-10-16T09:31:54.753 に答える
1

スレッドとイベントを使用して、WxPython を使用して実行時間の長いタスクで GUI を更新する方法の完全な例が必要な場合は、このページをご覧ください。このチュートリアルは非常に役に立ち、あなたのものと同様のプログラムを実行するのに役立ちました.

于 2008-10-16T08:38:06.080 に答える
0

Python 2.6のftplibを使用できない場合は、商用ソリューションを提供している会社があります。

ChilkatのCKFTP2は数百ドルの費用がかかりますが、Python 2.5で動作することを約束し、必要な情報を返す関数呼び出しget_AsyncBytesSent()を提供します。(コールバックは表示されませんでしたが、それも提供される可能性があります。)

私はこの製品を使用していません。

また、FTPが難しすぎる/高価であることが判明した場合は、代わりにいつでもHTTPアップロードに切り替えることができることを考慮してください。Chilkatには無料のHTTP/HTTPSアップロードライブラリがあります。

于 2008-10-19T14:14:17.817 に答える