Python字典和列表的常用函数和方法列表
A.字典内置函数列表1len(dict)计算字典元素个数,即键的总数。2str(dict)输出字典,可以打印的字符串表示。3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。B.字典常用的方法列表:1dict.clear()删除字典内所有元素2dict.copy()返回一个字典的浅复制3dict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值4dict.get(key,default=None)返回指定键的值,如果键不在字典中返回default设置的默认值5keyindict如果键在字典dict里返回true,否则返回false6dict.items...[>>…]
python中向https类的url发送post请求
python向https地址发送post请求,需要注意以下几点。1.一般都是向主机发出未经验证的HTTPS请求,所以需要关闭校验verify=False, response=requests.post(url,data=params,verify=False)2.即使使用了verify=False,但在执行时会发现取不到数据,只看到有一个Warning内容 警告示例:urllib3connectionpool.py:1045:InsecureRequestWarning:UnverifiedHTTPSrequestisbeingmadetohost..,因为requests默认开启了这个Warning警告内容,可在执行post...[>>…]
Python中通过KeyboardInterrupt捕获手动终止的进程任务
在写的后台任务程序中,启动任务进程后我都会创建一个任务记录,通过tryexcept捕获任务报告中的异常,并在最后通过finally使得无论如何创建的任务都能得到闭环处理,但在执行过程中直接使用CTRL+C进行停止,会导致不能实现闭环。 在进程响应内容中可以明显看到输出了Traceback(mostrecentcalllast):追踪并在最后提示了KeyboardInterrupt。 而在Python中,执行中的进行当按下键盘上的Ctrl+C键时,会抛出KeyboardInterrupt异常,这个异常通常用...[>>…]
Python3取得某个时间点之前最近的12个月的年月份
没有什么大多意思,就是因为需要找这么一个方法,网上又没有找到基于python3的合适的就整了个,没有技术含量,只为有需要的朋友可以找到、复制。返回结构类似:["2023-05","2023-06"...] fromdatetimeimportdatetime, #取得近一年的月份明细列表 defget_last_12_month(): now=datetime.now() year,month=now.year,now.month list_year_month=[] foriinrange(12): year_month_char=str(year)+'-'+str(('0'+str(month))ifmonth<10elsemonth) list_year_month.append(year_month_char) month=month-1 ifm...[>>…]
微信登录调用sns/userinfo取用户信息时nickname中文乱码巨坑问题解决
在使用微信扫码登录第三方应用时,第三方在取得access_token之后需要调用微信的sns/userinfo接口获取用户的nickname,openid之类的数据内容。然而在使用微信接口的时候发现真是有巨坑。 一开始我用的是英文昵称的微信号,扫码登录一切正常,但在使用一个中文昵称的微信扫码后,崩了。本来我以为只是一个简单的字符编码问题,但开始处理之后发现你要一开始不知道,它还真是个麻烦事,而这将会伴随每一个使用微信登录的开发者。微信请求方式http请求方式:GET https://ap...[>>…]
Python汉字转拼音cleverdeng/pinyin.py程序的调整处理
在使用python将汉字转为拼音的时候,我使用了https://github.com/cleverdeng/pinyin.py中的这个程序文件,虽然原程序是基于python2开发的,但程序很简洁,代码量也不多,完全可以使用。现在因为是python3的环境,会遇到一些问题以及原程序不够好的地方,在这里总结列出来一下:1.在加载dict_file文件时使用的是 def__init__(self,dict_file='word.data'): self.dict_file=dict_file 根本没有考虑程序文件是基于框架并不是在当前程序目录中运行,因此会导致找不到dict_file文件而报错。更好的...[>>…]
FastAPI框架中全局配置加载以及对接口文档页面的显示开关处理
对一个基于FastAPI框架的服务端项目,开发的时候想对其做一些优化、功能提升。准备将很多的项目业务逻辑控制交给系统后台的界面配置,因此需要在项目运行的时候加载全局配置项,同时在项目配置修改后能迅速地生效。可将配置加载的代码逻辑放在register_middleware(中间件处理的过程中),位置如下: #中间件处理 defregister_middleware(app:FastAPI): @app.middleware("http") #在如下方法之前进行全局配置加载 response=awaitcall_next(request) .... 此...[>>…]
FastApi框架怎么给BaseModel数据模型添加自定义属性
在使用FastApi框架开发时,如果需要使用BaseModel数据模型定义一个分页数据,需要用户传入的参数是page,page_size。但我们在处理时是需要将其转化成sql中的start,为了避免每次都需要自己去再进行计算,可以使用property来将一些方法设置成属性。如下在data_list方法中就可以直接使用pageinfo.start来取得所要的值。 #分页的数据模型 classPageInfo(BaseModel): page:int=Body(1,ge=1) page_size:int=Body(10,ge=5,le=100) @property defstart(self): returnself.page_size*(self.pag...[>>…]
FastAPI框架中全局业务加载的一些思考实践及处理位置
在使用FastAPI框架进行webapi的开发时,如果要加载一些全局的数据、配置、模块等内容时,应该放在哪里。有些程序会在最后执行的方法里通过depends来加载。如下方法中在get_page里面调用Depends的时候去初始化,但这并不是一个好的方法,因为它不够靠前,并且需要在所有的方法里都加上这个方法(有些地方并不需要user数据)。 defget_page( user:User=Depends(UserCheck) ): 我建议的位置包括数据库的连接初始化位置以及全局数据、配置的加载处理位置。在app进行创建...[>>…]
FastAPI框架中的默认request_body参数
FastAPI在使用其生成的docs接口文档时,经常需要我们输入一些json参数,但实际上这些参数我们调用的时候都是默认的,比如分页数据page一般都是1,pagesize也是,而BaseModel的参数default并不能直接传递到接口文档上request_body中的json中来,很不方便。 FastApi使用的是Pydantic模型,Pydantic模型中BaseModel如果要设置默认请求数据示例。可以通过在BaseModel下定义一个classConfig类,然后对其schema_extra设置example项值,这个就是request_body中的json。如下...[>>…]