记录一些小脚本

版权声明:非诚勿扰 https://blog.csdn.net/kaikai0803/article/details/88528005

生成n位随机字符串

def get_rand_str(n):
    """
    生成n位随机字符串
    :param: n: 生成的位数
    :return: string: String
    """
    string = ''
    for i in range(n):  # 循环n次
        temp = random.randint(1, 2)  # 大小写随机
        if temp == 1:
            s = chr(random.randint(97, 122))  # 小写随机
        else:
            s = chr(random.randint(65, 90))  # 大写随机
        string += s
    return string

字典-XML 互转

def dic2xml(dic):
    """
    参数字典dic转换为XML字符串
    :param dic: 待转换的参数字典
    :return: xml_data: xml格式数据
    """
    xml_data = '<xml>\n'  # xml字符串头
    for k, v in dic.items():
        temp = '<{0}>{1}</{0}>\n'.format(k, v)  # 拼接当前标签 <k>v</k>
        xml_data += temp  # 更新xml字符串
    xml_data += '</xml>'  # xml字符串尾
    return xml_data


from xml.etree.ElementTree import fromstring
def xml2dic(xml):
    """
    xml数据转换为dict对象
    :param xml: xml格式数据
    :return: dic: 转换过后的字典对象
    """
    root = fromstring(xml)  # 生成根标签对象
    dic = {}  # 容纳参数的空字典
    for i in root:
        dic[i.tag] = i.text  # 键值对应
    return dic

生成二维码保存为本地图片

def make_qrcode(text, qrcode_name):
    """
    此处调用草料二维码生成api
    生成二维码并保存为本地图片
    :param text: 二维码链接
    :param qrcode_name: 二维码名字
    :return: None
    """
    if not os.path.exists('QR_CODE'):
        os.mkdir('QR_CODE')
    if not isinstance(text, str):
        text = str(text)
    if not isinstance(qrcode_name, str):
        qrcode_name = str(qrcode_name)
    res = requests.get('http:' + etree.HTML(
        requests.get('https://cli.im/api/qrcode/code?text={}&mhid=vEHPDFvvmsghMHcrLNBTOao'.format(text)).text).xpath(
        '//img[@id="qrcode_plugins_img"]/@src')[0])
    with open('QR_CODE/' + qrcode_name + '.png', 'wb') as fp:
        fp.write(res.content)
    return 1

时间戳和datetime互换

def datetime2timestamp(datetime_obj):
    # 将python的datetime转换为unix时间戳
    timestamp_obj = time.mktime(datetime_obj.timetuple())
    return timestamp_obj


def timestamp2datetime(timestamp_obj):
    # 将unix时间戳转换为 python 的datetime
    datetime_obj = datetime.datetime.fromtimestamp(timestamp_obj)
    return datetime_obj

基于微信公众平台开发 生成签名

def get_sign(dic):
    """
    生成签名
    :param dic: 参与签名的参数字典
    :return: sign: string
    """
    params_list = sorted(dic.items(), key=lambda e: e[0], reverse=False)  # 参数字典倒排序为列表
    params_str = "&".join(u"{}={}".format(k, v) for k, v in params_list) + '&key=' + settings.KEY
    # 组织参数字符串并在末尾添加商户交易密钥
    md5 = hashlib.md5()  # 使用MD5加密模式
    md5.update(params_str.encode('utf-8'))  # 将参数字符串传入
    sign = md5.hexdigest().upper()  # 完成加密并转为大写
    return sign

查看视图函数运行时间的装饰器

def func_time(func):
    """
    视图函数运行时间装饰器
    :param func:
    :return:
    """

    def wrapper(*args, **kwargs):
        start = time.time()
        res = func(*args, **kwargs)
        end = time.time()
        # logger.info(str(end - start), str(func.__name__))
        logger.info(func.__name__)
        print('访问时间:', datetime.datetime.now(), '     访问接口:', func.__name__, (30 - len(func.__name__)) * ' ', '耗时:',
              (end - start) * 1000, 'ms')
        return res

    return wrapper

定制响应对象

class BaseError(object):
    # 封装报错类
    error_no = 0
    error_info = None
    error_info_dev = None

def get_response(data=None, error_obj=BaseError):
    """
    定制响应对象
    :param data: 响应主数据
    :param error_obj: 错误对象
    :return: res: 包装后的响应对象
    """
    content = {
        'error_no': error_obj.error_no,
        'error_info': error_obj.error_info,
        'error_info_dev': error_obj.error_info_dev,
        'data': data
    }
    # return HttpResponse(json.dumps(content))
    return JsonResponse(content)

猜你喜欢

转载自blog.csdn.net/kaikai0803/article/details/88528005