
Python
micromicrofat
Python | Go | Deep Learning
展开
-
【Py】使用swagger生成flask代码的暂时不要升级到最新版的connexion和flask版本
今天尝试将老仓库中的connexion和flask都升级到最新的版本,但出现了非常多的问题。没有问题,而且适配Python 3.12.0。原创 2023-11-10 14:48:29 · 511 阅读 · 0 评论 -
【Py】使用flask-apscheduler动态调整作业参数(附源码)
之前的项目常使用Apscheduler进行定时任务调度,但最近想通过接口对这些任务进行动态调整,比如调整任务启停、调整任务执行时间、间隔时间等等flask-apscheduler这个基于flask的库能够满足上面的需求,而且由于基于flask,所以我常用的connexion这个库理论上也能够完美支持。原创 2022-11-21 16:40:35 · 1658 阅读 · 0 评论 -
【JS | Py】如何获取对象(字典)的子集
今天在写前端接口请求代码时,出现接口因收到多余json键值对而导致的异常,故需要前端在发送请求前对发送的对象进行过滤。如果你的后端语言是Python,则可以使用如下方式在后端对接收到的json进行过滤。原创 2022-08-20 08:52:57 · 319 阅读 · 0 评论 -
【Py】优雅地遍历字典或列表对象末级值
有个业务需求:将列表或字典中的末级值进行转换,而对象的结构不定,可以采用以下的方式进行处理。注意:以下方式只能修改值,而如果需要修改键,则需要使用递归。原创 2022-08-18 17:46:18 · 181 阅读 · 0 评论 -
【Py】对字典进行join连接操作
对键进行fulljoin全连接,对值进行rightjoin右连接,即需要从d1中找出d2中没有的键值对,添加到d2中。原创 2022-07-19 11:57:43 · 908 阅读 · 0 评论 -
【Py】接口签名校验失败可能是由于ensure_ascii的问题
客户端:requests服务端:Flask客户端发请求前对请求签名,服务端对签名进行校验服务端签名校验失败,即生成的签名与客户端的不一致假设我们的请求体为在对字典数据进行json序列化时使用了如下代码其中的ensure_ascii参数是控制是否在序列化时使用ascii编码,默认为使用。效果就是中文字符全部变为unicode编码,这是因为中文字符不在ascii编码中。json序列化后对其进行签名,得到signature再通过requests将请求发送出去可能你已经发现问题了:requests中的j原创 2022-06-02 12:54:31 · 1490 阅读 · 0 评论 -
【Py】【VsCode】使用black格式化代码
将格式化工具从autopep8改为blacksettings中查找python formatting provider选择black文件保存时自动格式化settings中查找format on save取消格式化为双引号包裹字符串如果不取消,则会将所有使用单引号包裹的字符串强制转为双引号包裹进入settings.json加入如下内容"python.formatting.blackArgs": [ "--skip-string-normalization"]参考:http原创 2022-05-09 12:00:48 · 12980 阅读 · 0 评论 -
【动态更新】弃用deprecated登记
由于各项目代码更新频率不一致,导致项目中存在已弃用或即将弃用的方法,故在此记录一下,方便查找,以下的时间并非弃用时间,仅代表我发现的时间Sqlalchemy:2022-04-29更新警告内容:SADeprecationWarning: The Engine.table_names() method is deprecated and will be removed in a future release. Please refer to Inspector.get_table_names().原创 2022-04-29 11:05:59 · 5699 阅读 · 0 评论 -
【Py】对列表字典混合嵌套的对象进行遍历
今天项目需要对列表字典混合嵌套的对象进行key重命名,经过一番搜索后找到如下代码od = {'name': 'John', '1': [{'name': 'innername'}]}kd = { 'name': 'cname', '1': '2', 3: 'z' }def replace_keys(data_dict, key_dict): new_dict = { } if isinstance(data_dict, list): dict_value_list =原创 2022-04-27 16:59:59 · 588 阅读 · 0 评论 -
【Py】下划线命名与驼峰命名转换方式汇总
下划线转驼峰方法一def to_camelcase(text): arr = filter(None, text.lower().split('_')) res = '' j = 0 for i in arr: if j == 0: res = i else: res = res + i[0].upper() + i[1:] j += 1 return res该方法原创 2022-04-27 14:57:36 · 3432 阅读 · 0 评论 -
【Py】【Pandas】使用groupby实现类似Excel纵向合并单元格操作
最近一个项目需要使用Pandas对数据中某几列进行类似Excel中的合并单元格操作首先想到的是使用dataframe的set_index()方法通过测试,发现也确实能实现但是,一旦两条数据不相临,合并就失效了我们可以使用dataframe的groupby方法groupby更多是用在分组统计中,比如groupby().count(),而且groupby()后返回的是DataFrameGroupBy对象,而非DataFrame。但我们这里可以可以通过agg(lambda x: x)对分组后的数据原创 2022-04-22 11:34:45 · 4562 阅读 · 1 评论 -
【Sentry使用】通过before_send参数过滤event
今天在做项目时发现如下的代码会出现重复上报Sentry的问题try: ...except Exception as e: capture_exception(e) abort(500, description={ 'success': False, 'code': 500, 'message': str(e), 'data': None })InteralServerError是由abort产生abo原创 2022-04-20 09:51:31 · 1039 阅读 · 0 评论 -
【Py】去掉字典列表中某几个key的一种方法
今天在对字典构成的列表数据结构进行处理的时候,需要移除字典中的某几个key。可以使用map+filter的方式进行处理。for item in data: list(map(item.__delitem__, filter(item.__contains__,l)))但为什么要在map函数外套一层list,还不得而知参考:https://stackoverflow.com/a/30351294/7151777...原创 2022-04-18 14:16:10 · 754 阅读 · 0 评论 -
【Py】项目代码脱敏脚本
今天要上交代码进行代码审查, 对里面的敏感内容进行脱敏, 思路就是将代码中的字符串全部用星号代替, 并删除所有非代码文件以下就是执行上述过程的脚本import osimport re# 获取所有.py文件all_files = []for root, dirs, files in os.walk('./'): for file in files: if file.endswith('.py'): all_files.append(f'{root}原创 2022-04-14 16:51:35 · 995 阅读 · 0 评论 -
【Py】给已存在的Excel添加sheet
使用pandasimport pandas as pdfrom openpyxl import load_workbookdf = pd.DataFrame([{'a':1}])book = load_workbook("test.xlsx")with pd.ExcelWriter("test.xlsx",engine="openpyxl") as writer: writer.book = book df.to_excel(writer, sheet_name="shee原创 2022-03-30 11:01:30 · 3060 阅读 · 0 评论 -
【Py】Python对列表按数量分割
def batch(iterable, n=1): l = len(iterable) for ndx in range(0, l, n): yield iterable[ndx:min(ndx + n, l)]for x in batch(list(range(0, 10)), 3): print(x)[0, 1, 2][3, 4, 5][6, 7, 8][9]参考:https://stackoverflow.com/a/8290508/7151原创 2022-02-24 16:58:44 · 2166 阅读 · 0 评论 -
【Py】Python ssh登录服务器并执行容器内的命令并返回结果
import paramikoip = 'xxxxxx'port = 22username = 'root'password = 'xxxxxx'ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(ip, port, username, password)stdin, stdout, stderr = ssh.exec_command('docker原创 2022-02-22 17:26:57 · 3586 阅读 · 1 评论 -
【Py】隐藏warnings
import warningswarnings.filterwarnings("ignore", ".*This can have significant performance implications including some performance.*")...里面的内容换成你的warnings的内容就好了原创 2022-02-22 15:15:20 · 364 阅读 · 0 评论 -
【Sentry使用】【Py】Python代码编译后无法进入Sentry
最近的项目出现一个问题:对项目进行编译,运行一切正常,也没有任何报错,就仅仅是在Sentry前端无法显示任何相关执行记录。不编译则恢复正常。最外层代码为main.py,long.py,zhuo.py三个文件使用setup.py文件进行编译# main.pyfrom sentry_sdk import start_transactionfrom threading import Threadimport zhuoimport longwith start_transaction(op='xx原创 2022-02-22 11:45:57 · 680 阅读 · 0 评论 -
【OSS】【Py】OSS出现The specified key does not exist问题
今天接口的OSS模块出现异常: Exception: {'status': 404, 'x-oss-request-id': '5C50209BAE509FEEA16D753E', 'details': {'Code': 'NoSuchKey', 'Message': 'The specified key does not exist.', 'RequestId': '5C50209BAE509FEEA16D753E', 'HostId': 'dsideal-yy.oss-cn-qingdao.aliyu原创 2022-02-18 12:00:08 · 38134 阅读 · 1 评论 -
【Jupyter】JupyterHub解决IOPub data rate exceeded
>>> vim /etc/jupyterhub/jupyterhub_config.pyc.Spawner.args = ['--NotebookApp.iopub_data_rate_limit=10000000000000']>>> service jupyterhub restart参考:https://github.com/jupyterhub/jupyterhub/issues/1152#issuecomment-306891792原创 2022-02-13 16:43:58 · 555 阅读 · 0 评论 -
【Py】获取列表字典中某键不重复的值
L = [ {"id": 1, "name": "john", "age": 34}, {"id": 1, "name": "john", "age": 34}, {"id": 2, "name": "hanna", "age": 30},]>>> {v["id"] for v in L}{1, 2}参考:https://stackoverflow.com/questions/11092511/list-of-unique-dictionaries原创 2022-02-10 09:01:26 · 718 阅读 · 0 评论 -
【Py】【并没什么用】Python控制joycon的例子
安装CMake>>> brew install cmake安装hidapipip3 install hidapi安装swig>>> brew install swig编译libjoycon>>> git clone https://github.com/Inokinoki/libjoycon.git>>> cd libjoycon>>> mkdir build && cd b..原创 2022-02-06 22:33:25 · 980 阅读 · 0 评论 -
【Py】使用graphviz可视化对象引用关系
在分析Python代码的性能时,我们会需要对对象的创建引用销毁全过程进行跟踪,以此来找到需要优化的地方。通常会使用graphviz工具,根据维基百科描述graphviz是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。我们还需要使用到Python的包objgraph,根据pypi描述objgraph is a module that lets you visually explore Python object graphs.安装>>> b原创 2022-01-20 16:44:12 · 794 阅读 · 0 评论 -
【Sentry使用】自定义transaction
在使用Sentry时,你会发现有两种颜色的柱形图,一个是紫色的,在上面;一个是灰色的,在下面。这两类柱形图分别代表error和transaction,而在Python脚本环境下,不会自动进行transaction的记录,也就是说只会在出现异常时进行记录,而正常情况不会。这时就要了解一下Sentry的transaction创建逻辑自动手动首先是自动在使用一些框架的情况下会自动创建,官方给出了这些框架的列表基于WSGI的web框架,比如Django、Flask、Pyramid、Falcon原创 2022-01-18 11:54:13 · 2589 阅读 · 0 评论 -
【Py】关于aiohttp的一段示例代码
"""Comparison of fetching web pages sequentially vs. asynchronouslyRequirements: Python 3.5+, Requests, aiohttp, cchardetFor a walkthrough see this blog post:http://mahugh.com/2017/05/23/http-requests-asyncio-aiohttp-vs-requests/"""import asynciofrom原创 2022-01-12 17:36:12 · 178 阅读 · 0 评论 -
【Py】使用next函数实现空列表取值返回默认值
假设我们有如下数据a = [{'a':1, 'b': 1}, {'a':2, 'b':2}]a有两种情况:列表不为空且其中所有项的结构都相同空列表我们想输出键的列表for key in a[0].keys(): print(key)如果为空列表则报错a = []for key in a[0].keys(): print(key)IndexError Traceback (most recent ca原创 2022-01-05 17:02:25 · 794 阅读 · 0 评论 -
【Py】递归和生成器组合使用
我们知道理论上使用循环方式构建列表都可以通过生成器替代以生成斐波那契数列为例def fib(max): n, a, b = 0, 0, 1 fib_list = [] while n < max: fib_list.append(b) a, b = b, a + b n = n + 1 return fib_listfib(10)def fib(max): n, a, b = 0, 0, 1 w原创 2021-12-24 14:58:40 · 437 阅读 · 0 评论 -
【Py】【JS】两种语言加密语法对比
用Python对相同文件获取MD5,但MD5不同的解决办法postman中进行SHA1或MD5签名Python3:import hmach = hmac.new(b'secret', b'Hello, world!', digestmod='MD5')print(h.hexdigest())# fa4ee7d173f2d97ee79022d1a7355bcfJavaScript:var CryptoJS = require('crypto-js');var hash = Crypto..原创 2021-12-10 09:42:25 · 192 阅读 · 0 评论 -
【Py】数据处理速度对比
@《Go语言设计与实现》在工作中难免要对数据进行各种各样的处理,在Python中,我接触到的数据处理工具包括Pandas、原生语法等等,在Pandas中我们需要对列表字典数据进行转换,转换为DataFrame,而使用原生语法则不需要进行转换。添加新列>>> myList = [{'a': 'A'}, {'b': 'B'}, {'c': 'C'}]>>> %timeit for item in myList: item['elem']='value'128 n.原创 2021-12-07 17:50:56 · 792 阅读 · 0 评论 -
【Py】有无@staticmethod装饰器的区别
@小米屏幕灯复现今天在使用staticmethod的时候发现有没有这个装饰器都不影响使用class Foo: def bar(apple): print(apple)Foo.bar(123)123class Foo: @staticmethod def bar(apple): print(apple)Foo.bar(123)# 123遂产生好奇:这两个真的没有区别么?class Foo: def bar(apple).原创 2021-12-04 18:15:14 · 546 阅读 · 0 评论 -
【Py】模拟multipart/form-data请求并指定boundary格式
import requestsdata = { 'param1': 'paramVal1', 'param2': 'paramVal2'}files = [ ("file", ("file1.xml", open("file1.xml", "rb"), "text/xml")), ("file", ("file2.xml", open("file2.xml", "rb"), "text/xml"))]r = requests.post(url='http://lo原创 2021-11-04 17:02:31 · 4839 阅读 · 0 评论 -
【Py】try-except块中的Flask abort会被截获从而导致response与预期不符
今天在撸代码的时候出现一个问题:有些abort能够正常返回指定的状态码以及描述(description),但有些就直接返回200,而且没有任何描述这是由于你可能把abort包裹在try-except结构中了如下所示:def foo(): abort(400, description={ 'success': False, 'code': 4019, 'message': '事务执行失败,回滚', 'data': None原创 2021-10-20 18:14:25 · 400 阅读 · 0 评论 -
【翻译】SQLAlchemy Basics Tutorial
原文链接:https://leportella.com/sqlalchemy-tutorial/SQLAlchemy 基础教程从去年9月份我就开始Jupyter项目的工作,并且成为一段美好的经历。最近几天,我在与工作在JupyterHub内部的SQLAlchemy库进行斗争。由于我需要学习这个库并且不得不抓取一些StackOverflow上的问题来寻找答案,所以我创建了这篇文章来帮助消化我的一些疑问和发现。由于这篇文章已经非常长了,所以我决定将我在SQLAlchemy中遇到的主要问题放在一篇单独的文翻译 2021-10-08 16:58:35 · 159 阅读 · 0 评论 -
【Py】pyecharts数据可视化案例——地下室空气治理
Python 3.10.0发布几周前原创 2021-10-07 22:55:46 · 544 阅读 · 0 评论 -
【Py】解决ipython的python版本错误问题
最近在Mac上使用brew安装了最新的Python 3.10.0,用brew unlink/link 命令将Python3从3.8切换至3.10,并在3.10下安装了ipython,启动ipython后可以看到对应的Python为3.10.0,但当我切换回Python3.8后,发现ipython并没有跟着切换回Python3.8,依旧是3.10这时候的解决办法有如下几种:一:重新安装ipython>>> pip3 uninstall ipython>>> pip原创 2021-10-07 18:19:24 · 2568 阅读 · 0 评论 -
【Py】以SQL或ORM方式筛选数据对比
假设数据库中有以下数据:codenamecolorcapacity0001iPhone13 Pro Max远峰蓝色5120002iPhone13午夜色1280003iPhone13 mini星光色256我们希望从数据库中取出code为0001和0002两条数据的code和name字段,并转为如下格式[ { 'code':'0001', 'name':'iPhone13 Pro Max' },..原创 2021-09-29 15:31:33 · 220 阅读 · 0 评论 -
使用SQLAlchemy merge()方法实现MySQL INSERT UPDATE
我们知道MySQL支持insert update,其逻辑为:如果在INSERT后导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行UPDATE>>> INSERT INTO test(data_id, device_id) VALUES (1, 2) ON DUPLICATE KEY UPDATE device_id = '2'; 注意:与REPLACE INTO逻辑不一样,REPLACE INTO是在重复后,先将该条数据删除再进行插入,所以两者效果不同参考:h原创 2021-09-06 18:08:20 · 5834 阅读 · 0 评论 -
【JS|Py】使用filter从列表(数组)中根据字典(对象)的值查找
JavaScriptvar jsObjects = [ { "id": "01", "value": "01" }, { "id": "02", "value": "02" }, { "id": "03", "value": "03" }, { "id": "03", "value": "04" }, { "id": "05", "value": "05" }];var result = jsObjec原创 2021-08-31 16:55:31 · 2242 阅读 · 0 评论 -
【Py】cython编译后解释器会对某些类型进行类型检查
Python从3.5版本开始支持type hints# type_hint.pydef foo(a: str) -> str: print(a)def bar(b) -> str: print(b) return 0但并不会强制进行检查,也就是说类型不一致并没有什么发生但是使用cython编译后,一切就会不一样# setup.pyfrom distutils.core import setupfrom Cython.Build import cyth原创 2021-08-25 10:33:49 · 928 阅读 · 0 评论