- 博客(90)
- 收藏
- 关注
原创 Chat-TTS:windows本地部署实践【有手就行】
最近Chat-TTS模型很火,生成的语音以假乱真,几乎听不出AI的味道。我自己在本地部署玩了一下,记录一下其中遇到的问题。
2024-06-10 21:22:35
8335
2
原创 如何使用windows Terminal终端连接远程Linux服务器
近接触到了zsh这个shell,所以在ubuntu系统上反复折腾,终于在ubuntu-desktop系统上使用oh-my-zsh和配置好了一个比较好看的终端(个人认为挺好看,勿喷)。但是在从windwos的Mobaxterm登录ubuntu查看时,发现在Mobaxterm中有些图标是无法显示的,即使修改成和ubuntu一样的字体也不管用:尝试了xshell也是不行,同样有问题。
2023-12-01 23:51:59
3968
原创 HJSON:可注释、更简洁易用的JSON用户接口及其在Python中的使用
JSON是现代常用的一种数据储存和表示格式,具有良好的阅读和编写体验。在Python语言中可以和字典、列表等数据格式完美兼容。此外,JSON的另一个作用是作为配置文件使用,不过当使用json作为配置文件时,其有一个问题,就是json中不允许使用注释等额外的不符合json语法格式的内容(当然我们可以选择其他的如ini, yaml等格式来使用)。HJSON是一种可以添加注释,而且更加简洁的JSON表示,支持在.NET、JAVA、Python、GO等语言中使用。
2023-04-02 00:17:03
2286
原创 22_JSON兼容编码器
在某些情况下我们可能需要将一种数据类型(如,Pydantic的model)转换成与JSON相兼容的类型(如 dict、list 等)。例如,你想将它存放在数据库中。FastAPI对此提供了一个函数。
2022-10-24 15:38:31
779
1
原创 20_错误处理
在某些情况下,为HTTP错误添加自定义headers是有用的,例如,出于安全等方面的考虑。"X-Error" : "There goes my error" } , # 添加自定义headers) return {我们可以通过Starlette的异常工具添加自定义异常处理器。假设我们有一个自定义异常可能会在我们的代码或我们是用的库中被raise.现在我们想要使用FastAPI全局处理这个异常,那么我们可以通过。...
2022-08-31 23:08:19
1006
原创 Python中如何使用__slots__限制对象属性来节约内存
__slots__是python中类的一个类属性,它允许我们明确声明类数据对象的成员有哪些,同时取消创建 对象默认自带的 和 (除非在中也指定要带着这两个属性,或者在父类中提供了他们)。这对于节约 占用的空间来说意义重大,同时属性的查找速度也可以得到显著的提升。 是一个类变量,我们可以通过使用实例变量名称的字符串、可迭代对象或者字符串序列来为其赋值。推荐使用变量名称的字符串序列,最好使用元组(节约空间)。为声明的变量保留空间,并防止为每个实例自动创建 和 。...
2022-08-13 21:17:22
509
原创 windwos下配置ssh方式连接github/gitee,及常见连接失败问题解决
下面我将介绍如何创建 ssh密钥对并添加到自己的github/gitee 配置中。同时,对自己在之前的配置过程中遇到的问题进行记录,如密钥对自定义名称后无法自动连接成功(`Connection closed by 212.64.63.xxx port 22`)、windows下ssh-agent不能随git bash一同启动(`Cloud not open a connection to your authentication agent`)等,希望可以帮到有需要的同学。......
2022-08-10 23:20:20
11567
11
原创 19_请求表单与文件
使用和之前的相同的方式同时创建File和Formstr=Form()#同时定义File和Form参数)return{文件和表单字段将被作为表单数据由用户上传,然后我们在后端路径操作函数中接收。同时,我们也可以将部分文件声明为bytes,另一部分声明为。警告我们可以在一个路径操作中声明多个File和Form参数,但是,不能同时声明要接收JSON的Body字段。因为此时请求体的编码为,而不是。这是HTTP协议的规定,不是FastAPI的问题。...
2022-07-24 17:44:38
177
原创 18_请求文件
创建文件(File)参数的方式与之前的Body和Form#定义File参数return{File是直接继承自Form的类,导入File时,实际上是返回特定类的工厂函数。提示声明文件体必须使用File,否则,FastAPI会把该参数当做查询参数或请求体(JSON)参数。文件作为“表单数据”上传。如果把路径操作函数参数的类型声明为bytes,FastAPI将以bytes形式读取和接收文件内容。这种方式把文件的所有内容都储存在内存里,适用于小型文件。不过,很多情况下,UploadFile。...
2022-07-24 17:43:40
453
原创 17_表单数据
创建表单(Form)参数的方式和Body,Queryreturn{例如,OAuth2规范的“密码流”模式规定要通过表单字段发送username和password。它要求字段必须命名为username和password,并通过表单字段发送,不能使用JSON。使用Form可以声明与Body(及Query,Path,Cookie)相同的元数据和验证。说明Form是直接继承自Body的类。注意声明表单体要显式使用Form,否则,FastAPI会将参数当做查询参数或请求体(JSON)参数。...
2022-07-24 17:41:06
528
原创 16_响应状态码
与指定响应模型的方式相同,我们也可以在以下任意的路径操作中使用注意是「装饰器」方法(get,post等)的一个参数。不像之前的所有参数和请求体,它不属于路径操作函数。参数接收一个表示HTTP状态码的数字。也能够接收一个IntEnum类型,比如Python的http.HTTPStatus。注意一些响应状态码(请参阅下一部分)表示响应没有响应体。FastAPI知道这一点,并将生成表明没有响应体的OpenAPI文档。...
2022-07-21 23:11:16
184
原创 15_额外的模型
使用多个Pydantic模型,并针对不同场景自由地继承。如果一个实体(entity)必须能够具有不同的「状态states」,你无需为每个状态的实体定义单独的数据模型。以用户「实体」为例,其状态有包含password、包含password_hash以及不含密码。...
2022-07-21 22:55:13
1125
原创 13_Header参数
Header参数的定义方法和前面的、、参数一样。1. 声明Header参数:和之前一样, 参数第一个值是默认值,后面可以传递所有的额外验证或元数据注解:为了声明headers, 你需要使用, 因为否则参数将被解释为查询参数。 在 , 和 提供的功能之上有一点额外的功能。大多数标准的headers用 “连字符” 分隔,也称为 “减号” ()。但是像 这样的变量在Python中是无效的。因此, 默认情况下, Header 将把参数名称的字符从下划线 () 转换为连字符 () 来提取并记录 head
2022-07-12 18:30:24
1533
原创 12_Cookie 参数
Cookie参数的定义和, 参数一样。1. 声明Cookie参数:声明 Cookie 参数的结构和之前声明 Query , Path 参数时相同。第一个值是参数的默认值,同时也可以传递所有验证参数或元数据注解参数:注意:要声明 Cookie参数,需要使用 ,因为否则参数将被解释为查询参数。使用 声明 cookie参数,使用方式与 和 类似。...
2022-07-12 18:29:33
317
原创 11_额外数据类型
到目前为止,我们一直在使用常见的数据类型,如:, , , 。但是,我们也可以使用更复杂的数据类型,同时仍能得到之前提到的相同特性:下面是一些可用的其他数据类型:UUID:datetime.datetime:datetime.date:datetime.time:datetime.timedelta:frozenset:bytes:Decimal:可以在这里检查所有有效的pydantic数据类型: Pydantic data types.下面是一个路径操作的示例,其中的参数使用了上面的一些类型。注意,函数中
2022-07-12 18:22:50
212
原创 10_声明请求示例数据
我们可以声明在我们的app中可以接受的数据的示例。以下是常用的几种方式:我们可以使用 和 为pydantic 模型声明一个示例 ,如 Pydantic’s docs:Schema customization 所述:这些额外的信息将按原样添加到该模型的输出 JSON Schema 中,并将在 API 文档中使用。当在Pydantic模型中使用 函数时,还可以通过向函数传递任何其他任意参数来为 JSON Schema 声明额外的信息。如,为每个字段增加示例:如图,文档中的每个字段会出现响应的额外信
2022-07-12 18:21:14
647
原创 4_请求体
在HTTP请求中,如果需要将数据从客户端(如,浏览器)发送给API,则我们会将其作为“请求体(request body)”发送。请求体是客户端发送给API的数据;响应体是API发送给客户端的数据。我们的API几乎总是要返回给用户响应体的,但是客户端并不总是需要发送请求体。在FastAPI中我们使用Pydantic Model来声明请求体,同时能够获得Model所有的能力和优点。首先,我们需要从Pydantic导入 :2. 创建数据模型:然后,将我们需要的数据模型声明为继承自 的类。并使用标准的Pyt
2022-07-12 18:09:29
2441
原创 9_请求体-嵌套模型
使用 FastAPI,我们可以定义、校验、记录文档并使用任意深度嵌套的模型(感谢 Pydantic)。可以将一个属性定义为拥有子元素的类型。例如 Python list:这将使成为一个由元素组成的列表。不过这里没有声明其每个元素的类型。在python3.6-3.8,我们可以使用 typing 模块中的 :在python3.9+ 我们可以使用Python的标准 来声明子元素类型:声明带类型参数的列表:为了带有类型参数(内部类型)的类型,如 、、:在python3.9+ 中:在Python3.6-3
2022-07-12 18:05:32
469
原创 8_请求体-字段
与使用 、 和 在路径操作函数中声明额外的校验和元数据的方式相同,你可以使用 Pydantic 的 在 Pydantic 模型内部为属性字段声明校验和元数据。2. 声明模型属性:我们可以对模型中的属性使用 :的工作方式和, 和等相同,包括他们的参数等等也完全相同。我们可以在 、、 中声明额外的信息。这些信息将包含在生成的 JSON Schema 中。在文档的后面部分学习声明示例时,会了解到更多有关添加额外信息的知识。我们可以使用 Pydantic 提供的 为模型属性声明额外的校验和元数据。还可
2022-07-12 18:04:11
243
原创 7_请求体-多个参数
本章介绍请求体声明的高级用法。首先,毫无疑问,我们可以混合使用 、 和 声明, FastAPI会知道如何处理它们。同样的,我们可以将请求体参数的默认值设置为 来将其声明为是可选的:2. 多个请求体参数:在上面的示例中,路径操作希望有一个具有 的属性的JSON请求体,就像:但是我们也可以声明多个请求体参数,例如 item 和 user:在这种情况下,FastAPI将注意到该函数中有多个请求体参数(两个Pydantic 模型参数)。因此,它将使用参数名称作为请求体中的键(字段名称),并期望一
2022-07-12 17:54:47
608
原创 6_路径参数和数值校验
与使用 为查询参数声明更多的校验和元数据的方式相同,我们可以使用FastAPI提供的 为路径参数声明相同类型的校验和元数据。1. 声明元数据: 可以使用与 相同的所有参数。如,为路径参数 声明 元数据:2. 按需对参数排序:假设你想要声明一个必需的 类型查询参数 。而且你不需要为该参数声明任何其他内容,所以实际上你并不需要使用 。但是你仍然需要使用 来声明路径参数 。如果你将带有「默认值」的参数(关键字参数)放在没有「默认值」的参数(位置参数)之前,Python 将会报错。但是你可
2022-07-12 17:52:34
202
原创 5_查询参数和字符串校验
FastAPI允许我们为参数声明额外的信息和校验。以下面的程序为例:代码中查询参数 类型为 ,默认值为 ,因此它是可选参数。接下来我们为它添加额外的校验功能。我们打算添加约束条件:即使 是可选的,但是只要提供了该参数,则该参数值长度不能超过 50 个字符。为此,我们需要使用 FastAPI 提供的 类。2. 使用Query作为默认值:现在,将 Query 用作查询参数的默认值,并将它的 参数设置为 50:现在必须使用 替换默认值, Query的第一个参数同样也是用于定义默认值的。所以,
2022-07-12 17:50:18
587
原创 FastAPI 初级教程--用户指南 (持续更新中……)
在前面列举了FastAPI的相关特性和概念以及Python的类型提示后,我们正式进入FastAPI Web开发框架的学习。本篇文章将作为后续文章的目录使用,相关内容会持续更新(但愿如此😂)本部分是FastAPI的基础教程,涵盖了FastAPI使用的各种HTTP概念和特性。在阅读完成后,你基本可以完成一个Web项目的完整开发。之后你可以阅读进阶用户指南,了解更高层出的其他概念,并扩展FastAPI应用。注意: 在使用本教程的过程中,你可能需要使用FastAPI的所有依赖,可以通过 命令安装。
2022-07-10 20:20:50
669
1
原创 3_查询参数
查询参数(query parameters) 指 URL 中跟在路径参数后,以未开始,使用分割(如果有多个)的键值对形式的参数。如果我们在路径参数函数的形参中定义了不属于路径参数的形参,那么它们将被自动解释为"查询字符串"参数。在上面的代码中,路径为,没有路径参数,所以函数中定义的和就会被认为是查询参数。对应的URL可以是:此时查询参数为:。因为查询参数是URL的一部分,所以他们的原始类型是,不过在函数中,我们声明了他们的类型为 , 所以这两个值会自动转换为 类型并进行校验。应用于路径参数的所有相同过程
2022-07-10 20:18:45
1031
原创 2_路径参数
路径参数即 URL 中我们用来和路由进行匹配的可变部分,他使用 标识,其中的变量将承载通过URL传递的值,因此也可以称为路径变量。我们可以使用与Python 格式化字符串相同的语法来声明路径 「参数 parameters」或 「变量 variables」:路径参数 的值将会作为参数传递给函数。所以,如果运行并访问URL http://127.0.0.1:8000/items/foo 将会看到如下响应:1. 有类型的路径参数:可以使用标准的Python类型提示来标注函数中的路径参数类型:这样, 将
2022-07-10 20:16:40
2404
原创 1_创建并运行最小应用及使用交互性文档
一个最简单的FastAPI应用可能向下面这样::2. 启动应用:FastAPI是一个 Python ASGI web应用开发框架,也就是说我们可以使用它来完成后端API接口逻辑的开发,但是他并不能直接处理 HTTP请求/WebSocket连接。我们需要使用 Uvicorn ASGI web服务器 接收HTTP请求,并将其转换为符合 ASGI规范的格式 再传递给FastAPI处理。请求处理结束后,FastAPI的响应再原路返回到客户端渲染展示给用户。FastAPI使用Uvicorn服务器来提供serve
2022-07-10 20:13:30
737
原创 Python中的类型提示(Type Hints)及其在FastAPI中的应用
这一章我们来了解Python的类型提示的用法和其在FastAPI、Pydantic中的使用。python在 3.6 版本加入了对 类型提示 的支持,并在之后的版本中不断对其进行了优化。类型提示 type hints 是一种新的语法,用来声明一个变量的类型。通过声明变量的类型,编辑器和一些工具能够为用户提供更好的支持。本章内容知识对于Python类型提示的快速入门/复习,仅涵盖与FastAPI一起使用的部分功能。FastAPI代码库实现了100% 的类型提示,整个FastAPI都基于这些类型提示构建,他带了许
2022-07-09 13:21:32
1103
原创 最快的Pythonweb框架之一:FastAPI 初探
学习FastAPI 异步 web框架,记录一下,当做笔记。官网:https://fastapi.tiangolo.com/中文官网:https://fastapi.tiangolo.com/zh/项目地址:https://github.com/tiangolo/fastapiFastAPI是一个用于构建API的现代、快速(高性能)的web框架,使用Python3.6+ 版本,并基于Python标准库(typing库)提供的类型提示(type hints)。项目遵循 MIT 许可协议。其关键特........
2022-07-08 23:49:22
3173
原创 Python [sortedcontainers]有序容器库使用不完全指南
sortedcontainers是一个纯Python开发的排序容器库。这里的容器指的是字典、列表、集合这样的数据结构,不是docer之类的容器技术。简单的说就是,使用该库中类创建的列表、字典或集合,都是自动排序的,同时这些类还提供了像这样的用于有序数据结构的常用算法。该库虽然使用纯Python开发,但却号称拥有媲美甚至超越 C扩展 的速度。Python标准库提供的容器已经非常好用了,直到……你需要一个真正的排序列表、排序字典或排序集合。sortedcontainers可以提供自带排序功能的上述容器,且排序
2022-07-05 23:37:14
4285
1
原创 python高阶函数库 functools使用指南,带你认识缓存、键函数、描述器、富比较方法、单派发和泛型函数
functools 库用于提供高阶函数:作用于或返回其他函数的函数。一般,任何可调用对象都可以作为此模块的函数处理。其中会涉及部分新的概念,包括:。缓存是个 key : value 数据结构或数据库,用来加速用户访问的速度,当用户调用函数时,如果传入函数的参数与之前数据库中记录的 key 相同,则会直接返回库中存储的 value,而不必再次执行函数进行运算;如果传入的参数之前没存在库中,则执行函数,并将结果也存入库中。不过要注意,调用的参数必须严格相同才会触发缓存查找,如3和3.0会被看做两个不同的ke
2022-07-03 23:52:26
3002
原创 itertools库常用高效迭代器一览表,帮你快速实现数据的排列组合【python】
itertools提供一系列的快速、内存高效的iterator,这些迭代器本身或者组合都非常有用。如可以快速获得列表元素的排列、组合结果等。这些内置工具同时也能很好地与 模块中的高效函数配合使用。注意:itertools中方法返回(yield)的都是生成器对象,每次调用值处理一个元素,所以是内存高效的。例如,我们可以将两个向量的点积映射到乘法运算符: 。itertools提供了基本的常用的迭代器,如果感觉不够用,还可以安装 库使用其他迭代器:https://github.com/more-iter
2022-07-02 18:25:17
691
原创 map、reduce、filter等常与lambda配合使用的函数【Python】
lambda关键字可以用于创建小巧的匿名函数。它由参数和一个单独 expression 构成,表达式会在调用时被求值。创建 lambda 函数的句法为 。lambda经常与内置的或functools的某些函数搭配使用:map(function, iterable, …):将function函数作用于iterable中的每个元素上,并输出其结果的迭代器。如果传入了多个iterable参数,那么要求function对应要有相同数量的入参,以对多个iterable同时执行操作。如果传入的多个可迭代对象长度
2022-07-01 22:39:00
269
原创 Python循环中被遗忘的else选项
本文介绍Python的 和 语法,Python 中最少被使用和经常被误解的特性之一。Python中的循环和循环都有一个可选的 套件(类似于语句和语句),如果循环正常结束,那么就会执行该else套件。换句话说,如果我们不以任何非自然的方式(、或抛出异常)退出循环, 套件就会被执行。即,没有 语句,没有 语句,或者在循环中没有。看一个简...
2022-06-27 10:34:25
157
原创 Python timeit库测试代码片段运行时间
timeit 是一个用来测量小代码片段执行时间的工具库,有命令行和函数调用两种方法可供使用。可以直接查看文档最后的示例部分快速了解其用法。注意:需要注意的是,在命令行,传给timeit 的 (即要运行的测试代码)都要是字符串格式的,而不是函数引用或Python语句。在函数中,除了字符串,可以传入一个可调用对象。命令行方式:如果是在windows下使用命令行执行语句,切记最外层需要使用......
2022-06-25 10:27:48
936
原创 Python 从字典构造多叉树
构造一个树节点类,每个节点都有一个int类型的值(val),和0个或多个子节点childs。给定一个字典,其中字典的key为当前节点的val,value对应列表对应当前节点的childs的val值。请将该字典的构造为多叉树结构,使用root表示数的根节点,并打印每个节点的值及其子节点的值。(这里确保OrderDict字典的第一个key为树的根节点)。运行结果:对于第二种输出格式,其关系为:......
2022-06-23 18:53:48
2432
原创 使用PIL为图片添加水印[python]
最近遇到有需要使用证件的情况,但是直接发送证件照片可能存在安全风险,所以考虑在手机上找个软件给证件添加水印(满屏水印那种,不是单个水印)。但是在应用商店下了几个软件,又可以使用的但是非VIP用户有次数限制,很是烦人。所有决定自己用Python的PIL库搞一个小脚本处理它,同时证件照片在自己本地处理也比较放心,不用担心照片被app上传到服务器的风险。需要安装依赖:使用方法可以通过命令查看帮助文档,其中是脚本的名称,可以按自己喜好更换。在windows环境下测试使用,字体文件可以从windows字体库中
2022-06-18 00:03:50
1948
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人