同志们,这是一条实用性干货。
对于网络工作者来说,手工更新某些自己写的程序很麻烦,或者是在工作环境中,同事们可能会用到自己写的一些小的实用性工具,在后期的使用中可能会遇到bug或者是添加一些新的功能,这时候就需要重新编译了,编译好后,在手动替换之前的程序。这样就有点不方便了
-----------------------------------------------------------------------------
注意事项:
1:先准备一台ftp服务器,来存放数据或程序,我的ftp设置的是基本登录,是需要账号和密码的
2:如果在内网中,要确保,你要替换程序的电脑能够访问这个ftp服务器
3:用python写的更新程序,需要先检查一下是否有ftplib模块和os模块,如果没有的话,就得用pip先安装了
4:请确保需要被替换文件的电脑系统是否和编译程序的版本是否一致,不一致的话则无法运行,报错如下图,这样的加只能用相同版本的编译程序进行编译
5:如果要做到之后都是自动更新的话,可以把编译好了的exe程序加入到计划任务中,每日系统启动后就检查本地程序和ftp服务器上的相同程序是否一致
废话不多说,直接上代码
#导入模块
from ftplib import FTP
import os
# 登录ftp服务器
ftp = FTP()
ftp_server = 'ftp服务器的ip地址' # ftp站点对应的ip地址
username = '登录ftp的用户名' # 用户名
password = '登录ftp的密码' # 密码
ftp.connect(ftp_server, 21) # 连接ftp的地址和使用的端口
ftp.login(username, password) # 连接的用户名,密码
print(ftp.getwelcome()) # 打印出欢迎信息
frp =ftp.size('test1.exe') #查看test1.exe的大小
def ftp_connect():
today_file = 'test1.exe' #自定义要查找的文件名
remote_file = today_file # 远端文件名
local_file = 'test1.exe' # 本地文件名
fp = open(local_file, 'wb') #打开一个文件 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
ftp.retrbinary('retr ' + remote_file, fp.write) #从ftp服务器上下载文件
print('下载成功')
if os.path.exists('test1.exe') == False: #查找本地文件当前是否有这个文件
ftp_connect()
if os.path.exists('test1.exe') == True: #查找本地文件当前是否有这个文件
file_name = "D:\\Hoekey\\test1.exe" #找到本地文件
fsize = os.path.getsize(file_name) #查看本地文件的大小
if frp>fsize: #本地文件与ftp文件作大小比较,如果ftp的文件大于本地则更新
ftp_connect()
print('不需要更新')
程序编译好后,可以打包成exe
如果是第一次打包成exe程序的话 则需要先在cmd中运行pip install pyinstaller 安装打包模块
之后用pyinstaller -F xxx.py(xxx.py,打包的文件)即可
如有问题可以邮箱联系mengbil@163.com