python-日常临时笔记

1. 对网络请求报文进行编码整理

# 对报文参数进行处理
def unicode_convert(input):
    if isinstance(input, dict):
        return {unicode_convert(key): unicode_convert(value) for key, value in input.iteritems()}
    elif isinstance(input, list):
        return [unicode_convert(element) for element in input]
    elif isinstance(input, unicode):
        return input.encode('utf-8')
    else:
        return input

2. 解决json无法序列化datetime数据类型

import json
import datetime


class DateEncoder(json.JSONEncoder):
    """
    json 无法序列化datetime类型,自定义进行序列化
    """

    def default(self, obj):
        if isinstance(obj, datetime.datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        else:
            return json.JSONEncoder.default(self, obj)


# 使用
s = datetime.datetime.now()
print(type(s))

test = {"time": s, "life": [11, 22, 33]}
print(json.dumps(test, cls=DateEncoder))

3. 动态加载文件中的模块

# 1. 每个模块都需添加__all__属性,将需要导出的方法添加到里面
# 示例如下
import os

import glob

all_check_files = glob.glob('../check_modules/*.py', recursive=True)

# 所有模块中的方法名
check_list = []
check_dict = {}
for module_file in all_check_files:
    module_name, module_ext = os.path.splitext(os.path.basename(module_file))
    """动态导入模块中的方法1"""
    module = __import__(f"check_modules.{module_name}", fromlist=[module_name, ])
    for func in dir(module):
        print(getattr(module, "__all__"))
        if not func.startswith("__") and func in getattr(module, "__all__"):
            # 收集所有模块中的方法名
            check_list.append(func)
            # 构建校验项动态字典
            check_dict.update({func.upper(): getattr(module, func)})

    """动态导入模块中的方法2"""
    # import importlib
    # ret = importlib.import_module(name=f".{module_name}", package=f"check_modules")
    # print(ret)
    # print(dir(ret))
posted @   Alive_2020  阅读(129)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示