Слияние кода завершено, страница обновится автоматически
#! /usr/bin/env python
# encoding=utf8
import subprocess
import re
import sys
import os
from zlib import crc32
import hashlib
import binascii
import locale
# get encoding
language, encoding = locale.getdefaultlocale()
# get disk result
def sh(command, print_msg=True):
p = subprocess.Popen(
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
result = p.stdout.read().decode(encoding)
if print_msg:
print(result)
return result
# get usb mass storage
def usbpath():
if os.name == 'nt':
disks = sh("wmic logicaldisk get deviceid, description",
print_msg=False).split('\n')
for disk in disks:
if 'Removable' in disk or '可移动磁盘' in disk:
return re.search(r'\w:', disk).group()
elif os.name == 'posix':
return sh('ll -a /media')[-1].strip()
else:
return sh('ls /Volumes')[-1].strip()
# math cal
def getcrc32(filepath):
file = open(filepath,'rb')
return crc32(file.read())
def getbinasciiCRC(filepath):
file = open(filepath,'rb')
return (binascii.crc32(file.read())&0xffffffff)
def getmd5(filepath):
file = open(filepath,'rb')
md5func = hashlib.md5()
md5func.update(file.read())
return md5func.hexdigest()
def getsha1(filepath):
file = open(filepath,'rb')
sha1func = hashlib.sha1()
sha1func.update(file.read())
return sha1func.hexdigest()
# make update directory and open fw.json
if os.path.exists("./update") != True :
os.makedirs("./update")
f = open("./update/fw.json",mode="w+")
# get parameters
if len(sys.argv) > 1:
path = sys.argv[1]
else:
path = "./*.bin"
if len(sys.argv) > 2:
version = sys.argv[2]
else:
version = "0.1"
if len(sys.argv) > 3:
flash_type = sys.argv[3]
else:
flash_type = ""
# write data to json file
f.write("{\n")
if flash_type == "" or flash_type == "spiflash":
f.write(" \"path\":\"1:/update/%s\",\n"%os.path.basename(path))
elif flash_type == "sdcard":
f.write(" \"path\":\"0:/update/%s\",\n"%os.path.basename(path))
f.write(" \"version\":\"%s\",\n"%version)
f.write(" \"crc32\":\"%X\",\n"%(getcrc32(path)&0xffffffff))
f.write(" \"binascii_crc32\":\"%X\",\n"%(getbinasciiCRC(path)))
md5string = getmd5(path).upper()
sha1string = getsha1(path).upper()
f.write(" \"md5\":\"%s\",\n"%(md5string))
f.write(" \"sha1\":\"%s\""%(sha1string))
f.write("\n}")
# close file
f.close()
# copy bin file
print("cp binary file to update directory")
sh("cp " + path + " " + "./update",False)
# copy update dir to mass storage
#if usbpath() != "None":
# print("cp update directory to mass storage")
# sh("cp ./update %s/"%usbpath())
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )