使用异步ftp操作挂接GUI界面

时间:2008-10-16 02:30:34

标签: python windows user-interface ftp sftp

尝试在Windows上使用python GUI库实现文件上传的进度对话框窗口,看起来像IE download dialogFirefox download dialog之间的交叉。

  1. python有哪些异步(S)FTP库?理想情况下,我应该能够执行文件上载恢复并跟踪每个并行文件上传的进度。
  2. 如果我在每个单独的进程中运行每个文件上传,我如何获取上传状态并将其显示在进度条对话框中?

4 个答案:

答案 0 :(得分:1)

“ftplib”是Python内置的标准ftp库。在Python 2.6中,它有一个回调参数添加到用于上载的方法。

该回调是您提供给图书馆的功能;对于每个已完成的块,它被调用一次。

您的函数可以向GUI发送消息(可能在不同的线程/进程上,使用标准的线程间或进程间通信)告诉它更新其进度条。

Reference

答案 1 :(得分:1)

如果您想要一个完整的示例,说明如何使用线程和事件来使用WxPython更新长期运行的GUI,请查看此page。本教程非常有用,帮助我执行了与您类似的程序。

答案 2 :(得分:1)

如果数据传输在与GUI的单独线程中运行,则只要必须从数据传输线程更新进度条,就可以使用wx.CallAfter()。

首先,使用CallAfter()是必需的,因为无法从子线程调用wxPython函数。

其次,这将在主线程中将数据传输的执行与GUI分离。

请注意,CallAfter()仅适用于线程,不适用于单独的进程。在这种情况下,使用多处理包应该会有所帮助。

答案 3 :(得分:0)

如果你不能使用Python 2.6的ftplib,那么有一家公司提供商业解决方案。

Chilkat的CKFTP2花费数百美元,但承诺可以使用Python 2.5,并提供函数调用get_AsyncBytesSent(),它返回您需要的信息。 (我没有看到回调,但它也可能提供回调。)

我没有使用过这个产品。

另外请注意,如果FTP证明太硬/昂贵,您可以随时切换到HTTP上传。 Chilkat有一个免费的HTTP / HTTPS上传库。