用asynchronousftp操作连接GUI界面

试图实现一个file upload的进度对话窗口,看起来像IE下载对话框和Firefox下载对话框与Windows上的python GUI库的交叉。

  1. Python有什么asynchronous(S)FTP库? 理想情况下,我应该能够做file upload简历,并跟踪每个并行file upload的进度。
  2. 如果我在每个文件上分别运行一个file upload,我将如何获取上传状态并将其显示在进度条对话框中?

Solutions Collecting From Web of "用asynchronousftp操作连接GUI界面"

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

该回调是您提供给图书馆的功能; 每完成一个块就调用一次。

你的函数可以发送一个消息到GUI(也许在不同的线程/进程上,使用标准的线程间或进程间通信)来告诉它更新它的进度条。

参考

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

首先,使用CallAfter()是强制性的,因为wxPython函数不能从子线程调用。

其次,这将在主线程中解耦来自GUI的数据传输的执行。

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

如果你想要一个完整的例子来说明如何使用线程和事件来更新你的使用WxPython的长时间运行的任务的图形用户界面看看这个页面 。 这个教程是相当有用的,并帮助我执行一个类似的程序比你的。

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

奇尔卡特的CKFTP2花费数百美元,但承诺与Python 2.5一起工作,并提供一个函数调用get_AsyncBytesSent(),它返回您需要的信息。 (我没有看到回调,但它也可能提供。)

我没有使用这个产品。

另外考虑一下,如果FTP证明太硬/昂贵,你可以改用HTTP上传。 奇尔卡特有一个免费的HTTP / HTTPS上传库。