Python的Pydantic
BaseModel&BaseSetting【参考文档】
==Pydantic==包是一个数据类型管理器,它主要用于规范接口的数据传递,在大型开发中有很大的用处,一般情况下我们经常使用两个子类
BaseModel:标准模型
BaseSetting:标准设置
他们两个在基础用法上没有太大差别,但是一个是普通的数据规范,一个是用于读取设置和环境变量参数,按照你的实际需求来定义数据就行,如果你的数据是作为环境变量使用的,就使用basesetting就可以了。
我们有一个涩图插件的配置需要从Json文件加载,内容包含管理员名单、使用涩图的CD、启用插件的群名单,先设计数据格式,如下
12345678910111213from pydantic import BaseSetting, Extrafrom typing import Listclass Config(BaseSetting): superusers: List[str] setu_cd: int enable_groups: List[int] class Config: ex ...
学习Json库
参考资料
Json model
dumps 将Python对象转换成Json字符串
1234from json import dumpsexample_dict = {"id":"114514","name":"jinzhi","depart":"Nya"}# indent是一个格式化参数,能让转换后打印结果更好看,也可以不加json_date = dumps(example_dict,indent=4)
Python
JSON
dict
object
list, tuple
array
str
string
int, float, int & float-derived Enums
number
TRUE
TRUE
FALSE
FALSE
None
null
dump 将Python对象写入Json文件
12345from json import dumpexample_di ...
Python的with关键字
参考文档 | 参考文档2
经过一些学习,对于
12with open('file_path.txt',encoding='utf-8') as f: var = f.read()
早已见怪不怪,但是在异步的进一步学习中又遇到了类似于with async ... 的方法,因此with并不是专门为读取文本设计的。
他还有一些有趣的地方
with是py实现上下文管理的一种方式,它在一定程度上是try -- finally的缩写版本,出现异常时能够正确退出,但是本身不具备异常捕获功能。同时他会把后面函数(如open())的返回值赋值给as *。
我们可以自己定义一个支持with方法的类,只要这个类实现了__enter()__和__exit()__方法即可,正常实行时会先执行__enter()__进行初始化,内部支持若干其他方法,发生异常时则会调用__exit()__方法来安全退出。
12345678910111213class with_support(): def __init__(self): self.file = None def ...
关于Python对包的管理问题
Python参考
安装为了兼容性,一般使用2.7、3.7(3.8)进行开发,最初安装Python的时候安装了最新的3.10(已经出到3.11了),导致后期开发有一些包没有适配这个版本,于是要降级安装。
所有的版本在Python官网可以找到,也可以在仓库-编程软件这里点出注意点:
默认Python版本(我的是3.10所以我得重新安装一次),最好最后安装
建议使用Customer Install然后选择路径为C:/Python27(或合适的地方,你得找得到) 我的是这样的
选择ADD TO PATH,安装程序会帮你处理系统变量(2.7没有这个功能),安装完成后在CMD输入where python进行检查,如果弹出你的安装路径,说明都安装正常(2.7需要手动添加系统变量),这个时候你输入python3只会进入python3.8,如果你想进入python3.7是没有办法的,你也可以尝试测试pip的情况,使用pip -V查看当前pip挂载的版本。
区分版本
安装完成后,进入那个路径,将两个程序python.exe和pythonw.exe重命名为版本号,比如:
也就是说 ...
《异步:多线程-多进程-协程与回调》
-序引一般情况下,程序都是串行运行的,意味着你的A代码如果执行用时超长,比如调用Windows的程序API进行操作,或者请求某个服务器以1KB/s的速度下载内容,那么下一条代码B可能这辈子都无法运行了,在实际的业务中,我们当然不希望整个程序因为这若有若无的网速卡在那里,必须做点什么,因此把串行改并行是迫切的,于是==异步==的概念就浮出水面
异步按照我的理解,==异步==是一个状态,他的具体实现方式有多线程、多进程、协程与回调,这些方法都能实现异步,但是具体的实现原理不同,因此根据代码状态选择一个合适的异步手段尤为重要,因为还没有深入了解,因此在此随意列举一二:
多线程线程是对程序控制的最小单位,一个进程可以有多个现成,CPU每次处理任务也是一次处理一个线程的请求,那么我们可以在程序运行时让一个线程 挂起 或者 等待的时候执行另外一个线程,多个线程是在一个进程下的,为了防止冲突,使用 锁来确保每个线程的操作权限
比如:多个线程同时对一个变量或者一个文件进行写入操作,该听谁的?这个时候只有持有 写入 ...
TEST-4
测试文本
发生了什么?
发生了什么?情况是这样的,因为之前的博客和其他服务都是直接跑在服务器本机上,这对于维护和安全性来说非常不优雅,于是打算把他们都Docker化,但是又没有米买新的服务器来做一个过渡迁移,因此只能以爆破服务器的方式来重建,remake一下,于是网站出现了数日的无法访问的情况,经过一些实验和摸索(懒),现在终于恢复了访问辣!
然后?我们当然不保证后面不会出现这种情况,因为我还试图摆脱对宝塔面板的依赖,手写配置文件什么的,相当的麻烦,因此依然有可能出现意料之外的问题……
至少,现在,我们回来了~
Python的OS模块速查表
OS路径写法:
使用转移符,即‘.//ThisIs//AExample//Path’
使用转移符,即r‘./This/Is/Example/Path’
替换路径符号,即‘.\This\Is\A\ExamplePath’
操作基础操作:123456789#获取当前系统状态os.name-> 'nt' Windows 'posix' not windows#获取当前系统路径的分隔符os.sep-> '//' 当前系统路径使用//分隔#获取当前系统的换行符os.linesep-> '\r\n' 当前系统使用
基本操作:1234567891011#通过相对路径获得绝对路径os.path.abspath(Path)#拼接两个路径#<拼接的路径中没有绝对路径将会被处理为相对路径>#<拼接路径中有多个绝对路径,将以最后一个为准,前面的绝对路径大概率会被忽略>os.path.join(Path1[,Path2. . .])#判断路径是否存在os.path.exists(Pa ...
一些蠢事和如何拯救你的LINUX
——Linux急救方案本来是折腾Docker的,但是意外发现docker里的环境没有pip、yum、apt-get、ping、wget、make甚至gcc、g++环境都是Command NOT FOUND的情况,我本来以为docker是个微型的linux系统,因此可以从底部一步一步往上搭建环境,我确实错了,走了一些弯路,实际上还是有区别的,如果要从底层搭建,那就得从gcc、g++编译环境开始搭建,我已经失去了耐心
但是我依然会把一些操作步骤作为记录我曾经走过的路径。
检查gcc、g++环境输入以下指令检查两个环境:
12gcc -vg++ -v
如果没有,参考文档的开头部分
Rpm安装wget
实际上该文章是从底层开始往上写,而我的路径探索是从顶层往下找的。在发现yum无效,apt-get无效,连wget都没有,属实让人绝望哈
在一个很古老的网站上下载wget的安装包,用Ctrl+F去搜索wget即可,这是适配CentOS7的1.14版本,该网站上仍然保存有CentOS6的目录,但是很可惜,因为C6已经被遗弃,因此目录文件都被删除了,你能找到的只是一个警告文本。
不幸的是,我尝试 ...
一些Docker的指令
Topic>Docker Install MySQL Image Doc
>Full Docker Use Help
>Translate Docker Portainer To Chinese
Docker Primary CommandDocker Installed & Image SearchingDocker Installed Document
安装Docker
1null
环境检查
123docker -vdocker -version#详细版本信息
启动/关闭docker
12sudo start dockersudo stop docker
检查docker守护状态
12docker info# 守护启动应当返回一大串信息
查找镜像
1docker search ImageNAME
你可以通过DockerHUB来检查镜像的可用版本
拉取镜像
12docker pull ImageNAME[:VERSION]]# default use the latest image!
查看已经下载的镜像
1docker images
...