1. 设计需求
从ftp服务器下载文件到本地,并且在下载完后把FTP服务器端的该文件移动到指定文件夹,作为已下载标识。
2. 设计思路
使用pyqt5设计UI,选择libftp进行ftp文件读取,使用ssh连接服务端(普通用户),进行文件移动操作。
图1.程序流程图
3.主要实现
将下载放在线程中进行,避免主窗口卡死,并进行主窗更新(显示下载进度),读取ftp文件系统后,是有QTreeWidget()窗口显示多级目录(网上没找到相应的ftp客户端实例,只能自己构思了,所以共享一下),通过对展开目录信号的响应进行动态加载(避免连接后直接加载全部的长时间卡死)。
本地端文件系统显示简单多了,直接使用pyqt5的QDirModel(),读取本地目录,窗口选用QTreeView(),同时因为做的比较简单,并没有做多线程同步下载和下载文件目录选项(因为做这个小工具并没有并行下载的需求),所以加了弹窗体型,只能每次下载一个文件,并且得等下载完后才能选择第二个文件下载。
4.代码贴图
图2.主类包含函数
def retrbinary(self, cmd, callback,</