用PYQT简单做了一个FTP程序

 

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'patch_test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtWidgets
import sys
import os
import re
import time
import win32api,win32con


class Ui_mainWindow(object):
    def setupUi(self, mainWindow):
        mainWindow.setObjectName("mainWindow")
        mainWindow.resize(731, 661)
        self.cwd = os.getcwd()
        self.centralwidget = QtWidgets.QWidget(mainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(140, 10, 71, 31))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 10, 101, 31))
        self.label.setObjectName("label")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(10, 120, 141, 41))
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(10, 160, 141, 41))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(10, 200, 141, 41))
        self.label_5.setObjectName("label_5")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(140, 130, 181, 21))
        self.lineEdit_2.setObjectName("lineEdit_2")
        #self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        #self.lineEdit_3.setGeometry(QtCore.QRect(140, 170, 181, 21))
        #self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_4.setGeometry(QtCore.QRect(140, 210, 181, 21))
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(110, 510, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(540, 510, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(340, 570, 75, 23))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(340, 130, 75, 23))
        self.pushButton_4.setObjectName("pushButton_4")
        #self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        #self.pushButton_5.setGeometry(QtCore.QRect(340, 170, 75, 23))
        #self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(340, 210, 75, 23))
        self.pushButton_6.setObjectName("pushButton_6")
        self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_5.setGeometry(QtCore.QRect(140, 70, 131, 21))
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(10, 70, 101, 16))
        self.label_6.setObjectName("label_6")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(440, 130, 91, 21))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(570, 130, 131, 21))
        self.lineEdit.setObjectName("lineEdit")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(440, 170, 91, 21))
        self.label_7.setObjectName("label_7")
        #self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)
        #self.lineEdit_6.setGeometry(QtCore.QRect(570, 170, 131, 21))
        #self.lineEdit_6.setObjectName("lineEdit_6")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(440, 210, 91, 21))
        self.label_8.setObjectName("label_8")
        self.lineEdit_7 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_7.setGeometry(QtCore.QRect(570, 210, 131, 21))
        self.lineEdit_7.setObjectName("lineEdit_7")
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(20, 280, 631, 16))
        self.progressBar.setProperty("value", 24)
        self.progressBar.setObjectName("progressBar")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(20, 330, 681, 121))
        self.textBrowser.setObjectName("textBrowser")
        mainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(mainWindow)
        self.statusbar.setObjectName("statusbar")
        mainWindow.setStatusBar(self.statusbar)
        self.menubar = QtWidgets.QMenuBar(mainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 760, 23))
        self.menubar.setObjectName("menubar")
        self.menuLuoqi_Patch = QtWidgets.QMenu(self.menubar)
        self.menuLuoqi_Patch.setObjectName("menuLuoqi_Patch")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        self.menu_2 = QtWidgets.QMenu(self.menubar)
        self.menu_2.setObjectName("menu_2")
        self.menu_3 = QtWidgets.QMenu(self.menubar)
        self.menu_3.setObjectName("menu_3")
        mainWindow.setMenuBar(self.menubar)
        self.actionopen = QtWidgets.QAction(mainWindow)
        self.actionopen.setObjectName("actionopen")
        self.actionclose = QtWidgets.QAction(mainWindow)
        self.actionclose.setObjectName("actionclose")
        self.actionexit = QtWidgets.QAction(mainWindow)
        self.actionexit.setObjectName("actionexit")
        self.actionFTP = QtWidgets.QAction(mainWindow)
        self.actionFTP.setObjectName("actionFTP")
        self.actionFTPLogin = QtWidgets.QAction(mainWindow)
        self.actionFTPLogin.setObjectName("actionFTPLogin")
        self.actionLogin = QtWidgets.QAction(mainWindow)
        self.actionLogin.setObjectName("actionLogin")
        self.actionLogout = QtWidgets.QAction(mainWindow)
        self.actionLogout.setObjectName("actionLogout")
        self.menuLuoqi_Patch.addAction(self.actionopen)
        self.menuLuoqi_Patch.addAction(self.actionclose)
        self.menuLuoqi_Patch.addAction(self.actionexit)
        self.menu.addAction(self.actionFTP)
        self.menu.addAction(self.actionFTPLogin)
        self.menu_2.addAction(self.actionLogin)
        self.menu_2.addAction(self.actionLogout)
        self.menu_3.addAction(self.actionLogin)
        self.menubar.addAction(self.menuLuoqi_Patch.menuAction())
        self.menubar.addAction(self.menu.menuAction())
        self.menubar.addAction(self.menu_2.menuAction())
        self.menubar.addAction(self.menu_3.menuAction())

        self.retranslateUi(mainWindow)
        QtCore.QMetaObject.connectSlotsByName(mainWindow)

    def retranslateUi(self, mainWindow):
        _translate = QtCore.QCoreApplication.translate
        self.comboBox.setItemText(0, _translate("mainWindow", "CT1"))
        #self.comboBox.setItemText(1, _translate("mainWindow", "CT2"))
        self.comboBox.setItemText(1, _translate("mainWindow", "CNC1"))
        self.comboBox.setItemText(2, _translate("mainWindow", "ALLSEV"))
        self.label.setText(_translate("mainWindow", "请选择大区:"))
        self.label_3.setText(_translate("mainWindow", "确认电信1区文件路径"))
        #self.label_4.setText(_translate("mainWindow", "确认电信2区文件路径"))
        self.label_5.setText(_translate("mainWindow", "确认双线1区文件路径"))
        self.pushButton.setText(_translate("mainWindow", "修改版本号"))
        self.pushButton_2.setText(_translate("mainWindow", "全部上传"))
        self.pushButton_3.setText(_translate("mainWindow", "退出"))
        self.pushButton_4.setText(_translate("mainWindow", "选择文件"))
        #self.pushButton_5.setText(_translate("mainWindow", "选择文件"))
        self.pushButton_6.setText(_translate("mainWindow", "选择文件"))
        self.label_6.setText(_translate("mainWindow", "修改版本号为:"))
        self.label_2.setText(_translate("mainWindow", "当前版本号为:"))
        #self.label_7.setText(_translate("mainWindow", "当前版本号为:"))
        self.label_8.setText(_translate("mainWindow", "当前版本号为:"))
        self.menuLuoqi_Patch.setTitle(_translate("mainWindow", "文件"))
        self.menu.setTitle(_translate("mainWindow", "配置"))
        self.menu_2.setTitle(_translate("mainWindow", "查看用户"))
        self.menu_3.setTitle(_translate("mainWindow", "关于"))
        self.actionopen.setText(_translate("mainWindow", "open"))
        self.actionclose.setText(_translate("mainWindow", "close"))
        self.actionexit.setText(_translate("mainWindow", "exit"))
        self.actionFTP.setText(_translate("mainWindow", "FTP配置文件"))
        self.actionFTPLogin.setText(_translate("mainWindow", "FTP链接"))
        self.actionLogin.setText(_translate("mainWindow", "Login"))
        self.actionLogout.setText(_translate("mainWindow", "Logout"))
        self.actionLogin.setText(_translate("mainWindow", "关于软件"))

        self.pushButton_4.clicked.connect(self.openfile1)
        #self.pushButton_5.clicked.connect(self.openfile2)
        self.pushButton_6.clicked.connect(self.openfile3)
        self.comboBox.currentIndexChanged.connect(self.bt_ftp)
        self.pushButton.clicked.connect(self.change_version)
        self.pushButton_3.clicked.connect(self.close_e)
        self.actionFTP.triggered.connect(self.openftpfile)
        self.actionFTPLogin.triggered.connect(self.ftplogin)
        self.pushButton_2.clicked.connect(self.ftplogin)
        self.actionLogin.triggered.connect(self.aboutnn)


    def aboutnn(self):
        win32api.MessageBox(0, "软件版本:1.0, \n COPYRIGHT BY Tiancity", "About APP", win32con.MB_OK)

    def por(self,filesize):
        for i in range(1, filesize):
            self.progressBar.setValue(i)
            time.sleep(0.01)

    ####打开FTP配置文件
    def openftpfile(self):
        path =(self.cwd +'\\' r'ftplist.ini')
        #print(path)
        os.system('start notepad '+path)
        #os.startfile(path)


    def ftplogin(self):
        x1 = self.comboBox.currentText()
        if x1 == 'ALLSEV':
            import configparser
            config = configparser.ConfigParser()  # 类实例化
            path = (self.cwd + '\\' r'ftplist.ini')
            config.read(path)
            session = config.sections()
            for xn in session:
                vhost = config.get(xn, 'host')
                print(xn)
                print(vhost)
                vport = config.getint(xn, 'port')
                vuser = config.get(xn, 'user')
                vpwd = config.get(xn, 'passwd')
                vpf = config.get(xn, 'patchfile')
                #登入FTP
                from ftplib import FTP
                buf_size = 1024
                ftp = FTP()
                ftp.connect(vhost,vport)
                ftp.login(vuser,vpwd)
                file_name = ftp.nlst()
                self.textBrowser.append('正在链接FTP中。。。。'+ ' '+ str(file_name))
                self.textBrowser.append(str(xn)+'登入成功。。可以上传文件。。')
                pwd_patch = ftp.pwd()
                self.textBrowser.append(pwd_patch)
                cwd_patch = ftp.cwd('/' + vpf)
                self.textBrowser.append(cwd_patch)
                patch_fff = []
                pn = patch_fff.append(self.lineEdit_2.text())
                #pn1 = patch_fff.append(self.lineEdit_3.text())
                pn2 = patch_fff.append(self.lineEdit_4.text())
                for ii in patch_fff:
                    if ii == '':
                        win32api.MessageBox(0, "你的文件未设置,请重新设置。", "ERROR", win32con.MB_OK)
                    else:
                        red = re.compile(r'/')
                        patch_nn = red.split(ii)
                        print(patch_nn[-1])
                        # patchname1 = 'patch_gm1.txt'
                        ftp.delete(patch_nn[-1])
                        self.textBrowser.append(str(xn)+' ' + patch_nn[-1] + "删除完成,准备上传。。。。")
                        with open(ii, 'rb') as fp:
                            ftp.storbinary('STOR %s' % patch_nn[-1], fp, 4096)
                            ftp.set_debuglevel(0)
                            self.textBrowser.append(str(xn)+' ' + patch_nn[-1] + "文件更新完成。。。")

                ftp.close()
        else:
            import configparser
            config = configparser.ConfigParser()  # 类实例化
            path = (self.cwd + '\\' r'ftplist.ini')
            config.read(path)
            vhost = config.get(x1, 'host')
            vport = config.getint(x1, 'port')
            vuser = config.get(x1, 'user')
            vpwd = config.get(x1, 'passwd')
            vpf = config.get(x1, 'patchfile')
            # 登入FTP
            from ftplib import FTP
            buf_size = 1024
            ftp = FTP()
            ftp.connect(vhost, vport)
            ftp.login(vuser, vpwd)
            file_name = ftp.nlst()
            self.textBrowser.append('正在链接FTP中。。。。' + ' ' + str(file_name))
            self.textBrowser.append(str(x1)+'登入成功。。可以上传文件。。')
            pwd_patch = ftp.pwd()
            self.textBrowser.append(pwd_patch)
            cwd_patch = ftp.cwd('/' + vpf)
            self.textBrowser.append(cwd_patch)
            patch_fff = []
            pn = patch_fff.append(self.lineEdit_2.text())
            #pn1 = patch_fff.append(self.lineEdit_3.text())
            pn2 = patch_fff.append(self.lineEdit_4.text())
            for ii in patch_fff:
                if ii == '':
                    win32api.MessageBox(0, "你的文件未设置,请重新设置。", "ERROR", win32con.MB_OK)
                else:
                    red = re.compile(r'/')
                    patch_nn = red.split(ii)
                    print(patch_nn[-1])
                    # patchname1 = 'patch_gm1.txt'
                    ftp.delete(patch_nn[-1])
                    self.textBrowser.append(str(x1)+' ' +patch_nn[-1] + "删除完成,准备上传。。。。")
                    with open(ii, 'rb') as fp:
                        ftp.storbinary('STOR %s' % patch_nn[-1], fp, 4096)
                        ftp.set_debuglevel(0)
                        self.textBrowser.append(str(x1) + ' '+ patch_nn[-1] + "文件更新完成。。。")
            ftp.close()


    ####选择电信1patch文件路径并读取版本号
    def openfile1(self):
        self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
                                                                     'Text files(*.txt)')
        self.lineEdit_2.setText(self.file)
        rd_over = self.lineEdit_2.text()
        f = open(r'{}'.format(rd_over), 'r+')
        st1 = r'patch_version.*'
        for ss in f.readlines():
            # print(ss)
            tt = re.match(st1, ss)
            # print(tt)
            if tt != None:
                ret = re.split(r'=', str(tt.group()))
                # print(ret)
                for rr in ret:
                    # print(rr)
                    if rr != 'patch_version':
                        # print(rr)
                        self.lineEdit.setText(rr)

        f.close()
    '''
    def openfile2(self):
        self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
                                                                     'Text files(*.txt)')
        self.lineEdit_3.setText(self.file)
        rd_over = self.lineEdit_3.text()
        f = open(r'{}'.format(rd_over), 'r+')
        st1 = r'patch_version.*'
        for ss in f.readlines():
            # print(ss)
            tt = re.match(st1, ss)
            # print(tt)
            if tt != None:
                ret = re.split(r'=', str(tt.group()))
                # print(ret)
                for rr in ret:
                    # print(rr)
                    if rr != 'patch_version':
                        # print(rr)
                        self.lineEdit_6.setText(rr)

        f.close()
    '''
    def openfile3(self):
        self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
                                                                     'Text files(*.txt)')
        self.lineEdit_4.setText(self.file)
        rd_over = self.lineEdit_4.text()
        f = open(r'{}'.format(rd_over), 'r+')
        st1 = r'patch_version.*'
        for ss in f.readlines():
            # print(ss)
            tt = re.match(st1, ss)
            # print(tt)
            if tt != None:
                ret = re.split(r'=', str(tt.group()))
                # print(ret)
                for rr in ret:
                    # print(rr)
                    if rr != 'patch_version':
                        # print(rr)
                        self.lineEdit_7.setText(rr)

        f.close()

    '''def openfile4(self):
        self.file, filename1 = QtWidgets.QFileDialog.getOpenFileName(self.centralwidget, '选择文件', self.cwd,
                                                                     'Text files(*.txt)')
        self.lineEdit_5.setText(self.file)
        '''

    # 读取FTP信息
    def bt_ftp(self):
        x1 = self.comboBox.currentText()







    # 读取patch旧版本号
    # def rd_over(self):
    #变更版本号
    def change_version(self):
        rd_local = self.lineEdit_2.text()
        #rd_local1 = self.lineEdit_3.text()
        rd_local2 = self.lineEdit_4.text()
        old_vv1 = (self.lineEdit.text())
        #old_vv2 = (self.lineEdit_6.text())
        old_vv3 = (self.lineEdit_7.text())
        # print(rd_loacl)
        if rd_local != '':
            self.change_v(old_vv1, rd_local)
            xx1 = self.read_nv(rd_local)
            self.lineEdit.setText(xx1)
            '''
            if rd_local1 != '':
                self.change_v(old_vv2, rd_local1)
                xx2 = self.read_nv(rd_local1)
                self.lineEdit_6.setText(xx2)
            '''
            if rd_local2 != '':
                self.change_v(old_vv3, rd_local2)
                xx3 = self.read_nv(rd_local2)
                self.lineEdit_7.setText(xx3)

        else:
            win32api.MessageBox(0, "抱歉第一个路径都为空!!!请选择一个文件!!!", "提醒", win32con.MB_OK)
            '''
            if rd_local1 != '':
                self.change_v(old_vv2, rd_local1)
                xx2 = self.read_nv(rd_local1)
                self.lineEdit_6.setText(xx2)
            '''
            if rd_local2 != '':
                self.change_v(old_vv3, rd_local2)
                xx3 = self.read_nv(rd_local2)
                self.lineEdit_7.setText(xx3)
            else:
                win32api.MessageBox(0, "抱歉第二个路径都为空!!!请选择一个文件!!!", "提醒", win32con.MB_OK)
                if rd_local2 != '':
                    self.change_v(old_vv3, rd_local2)
                    xx3 = self.read_nv(rd_local2)
                    self.lineEdit_7.setText(xx3)
                else:
                    win32api.MessageBox(0, "抱歉三个路径都为空!!!请选择一个文件!!!", "提醒", win32con.MB_OK)
                    return
        #print(vv)
        #################获取各个不同的版本号,修改

    def change_v(self,n,rd):
        old_version1 = 'patch_version=' + str(n)
        new_version = self.lineEdit_5.text()
        new_version1 = 'patch_version=' + str(new_version)
        with open(rd, "r", encoding="utf-8") as f1, open("%s.bak" % rd, "w", encoding="utf-8") as f2:
            for line in f1:
                f2.write(re.sub(old_version1, new_version1, line))
            f1.close()
            f2.close()
            os.remove(rd)
            os.rename("%s.bak" % rd, rd)
            win32api.MessageBox(0, "修改成功", "提醒", win32con.MB_OK)


    def read_nv(self,llj):
        f = open(r'{}'.format(llj), 'r+')
        st1 = r'patch_version.*'
        for ss in f.readlines():
            # print(ss)
            tt = re.match(st1, ss)
            # print(tt)
            if tt != None:
                ret = re.split(r'=', str(tt.group()))
                # print(ret)
                for rr in ret:
                    # print(rr)
                    if rr != 'patch_version':
                        print(rr)
                        return (rr)

        f.close()

    def close_e(self):
        exit(0)








if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)  # 创建一个QApplication,也就是你要开发的软件app
        MainWindow = QtWidgets.QMainWindow()  # 创建一个QMainWindow,用来装载你需要的各种组件、控件
        ui = Ui_mainWindow()  # ui是Ui_MainWindow()类的实例化对象
        ui.setupUi(MainWindow)  # 执行类中的setupUi方法,方法的参数是第二步中创建的QMainWindow
        MainWindow.show()  # 执行QMainWindow的show()方法,显示这个QMainWindow
        sys.exit(app.exec_())  # 使用exit()或者点击关闭按钮退出QApplicat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daniho001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值