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))
人生苦短,我用python!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具