代码拉取完成,页面将自动刷新
import os
import sys
import requests
import json
from json import JSONEncoder
import logging
import logging.handlers
import fileinput
import zipfile
import importlib
# 日志模块
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logFormat = logging.Formatter("%(message)s")
# 日志输出流
stream = logging.StreamHandler()
stream.setFormatter(logFormat)
logger.addHandler(stream)
update_py_url = ''
py_dir = 'ccb_py'
py_name = 'ccb.zip'
version_dir = f'{py_dir}/version'
#update_version_url = 'http://127.0.0.1:5000/ccb/api/updatePy'
def env(key):
return os.environ.get(key)
# 1. 获取下载地址,并判断版本号,是否需要更新
# 2. 下载最新脚本文件
# 3. 解压文件
#获取本地的版本号
def getLocaVersion():
version = '0'
basepath = os.path.dirname(__file__)
version_file_path = os.path.join(basepath, version_dir)
try:
if os.path.exists(version_file_path):
with fileinput.input(files=(version_file_path,)) as file:
version = file[0]
except Exception as e:
logger.error('获取脚本版本号失败!',e)
return version
def updateVersion(update_version_url):
resp = requests.get(f'{update_version_url}?version={getLocaVersion()}', stream=True,verify=False)
if(resp.status_code == 201):
return True
elif(resp.ok):
basepath = os.path.dirname(__file__)
py_file_dir = os.path.join(basepath, py_dir)
if not os.path.exists(py_file_dir):
os.makedirs(py_file_dir)
else:
del_file(py_file_dir)
py_file_path = os.path.join(basepath, py_dir, py_name)
with open(py_file_path,"wb") as f:
f.write(resp.content)
f.close()
#解压文件
# 注意压缩格式选择
frzip = zipfile.ZipFile(py_file_path, 'r', zipfile.ZIP_DEFLATED)
# 将所有文件加压缩到指定目录
frzip.extractall(py_file_dir)
frzip.close()
newVersion = getLocaVersion()
logger.info(f'版本更新成功 , 当前版本:{newVersion}')
return True
else:
content = resp.content.decode('utf-8')
logger.info(content)
return False
#删除一个文件夹下的所有所有文件
def del_file(path):
ls = os.listdir(path)
for i in ls:
c_path = os.path.join(path, i)
#logger.info(f'删除文件:{c_path}')
if os.path.isdir(c_path):#如果是文件夹那么递归调用一下
del_file(c_path)
else: #如果是一个文件那么直接删除
os.remove(c_path)
if __name__=='__main__':
url = env('CCB_PY_SERVER')
# url='http://192.168.11.241:5000/ccb/api/updatePy'
if(url is None or len(url)==0):
logger.info('缺少环境变量 CCB_PY_SERVER, 请配置后重试!')
updateStatus = updateVersion(url)
if(updateStatus):
sys.path.append('ccb_py/')
module = importlib.import_module('ccb_ql_task')
module.main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。