记录一些奇怪的问题 希望可以帮助到更多人
Python 内存溢出
- Python 版本
3.8.9
- 在
FastApi
中增加playwright
后内存几秒增加1M
并且不进行释放
- 通过
tracemalloc
模块定位到
Programs\Python\Python39\lib\json\decoder.py:353: size=344 KiB, count=932, average=377 B
- 执行 10 个小时左右内存达到
100%
进程被杀死
解决
- 检查了全局对象 发现并没有重复引用
- 然后更新了
Python
版本为3.9.13
之后 问题解决 内存虽然会高 但会自动回收
Pycharm 导包异常
- 在安装
redis
并且导包 from redis import asyncio as redis_asyncio
- 在
pycharm
中asyncio
会报错 提示找不到 但是可以正常运行代码
- 并且没有代码提示 (十分致命)
解决
- 安装以下包即可
pip install types-redis
bytes 直接转图片对象
- 有时候网页上获取到的图片就是
bytes
或者base64
如果需要本地打开那又要保存再打开
Image.open(io.BytesIO( 图片bytes ))
通过这个语句可以直接把图片bytes
转为图片对象进行操作
svg 识别
- 今天遇到一个网站 他的数值都是用 svg 画出来的 接口响应的也都是
path d值
只能想办法用ocr
进行识别
import io
import ddddocr
from reportlab.graphics import renderPM
from svglib.svglib import svg2rlg
width = 68
height = 24
path_d = "M15.25 20.70L15.25 23.10L2.68 23.10L2.68 20.70L7.59 20.70L7.59 4.05L2.55 5.51L2.55 2.96L10.35 0.69L10.35"
svg_path = f'<svg width="{width}" height="{height}" xmlns="http://www.w3.org/2000/svg"><path d="{path_d}" stroke="#000"/></svg>'
drawing = svg2rlg(io.BytesIO(svg_path.encode('utf-8')))
img_bytes2 = renderPM.drawToString(drawing, fmt="PNG")
ocr = ddddocr.DdddOcr()
res = ocr.classification(img_bytes2)
print('识别出的: ' + res)
请求乱码 (GBK)
- 遇到一个网站 发送的中文变成乱码
- 复制
curl
也无法导入Apifox
研究了好久

- 但是在上面 可以看到是中文

- 后面把
CURL
放到记事本里面 发现是GBK
编码 一开始还以为是哪个JS
加密了
client.post(url=url, data=urlencode(data, encoding='GBK'))
- 需要用这种方式进行处理