python常用第三方包,可从这个地址查看:
PyPI · The Python Package Index
  • yaml
  • pytest 
  • pysnooper
  • attrs
  • pydantic
  • pickle

 

python对于从git下载的内容,进入包内使用以下命令:

 

python setup.py build install

 

对于whl包,可省去后面的whl直接安装,假如有whl包是test123.whl

pip install  test123

 

pip: 是 Python 包管理工具,python的其它包安装一般都是通过pip操作。python3.4+自带有此包。

pip install poetry --timeout=10000 -i https://pypi.tuna.tsinghua.edu.cn/simple

下载地址:https://pip.pypa.io/en/stable/installation/

参考使用:https://www.runoob.com/w3cnote/python-pip-install-usage.html

pip3 install --timeout=1000 greenlet==2.0.0 //通过双等号来添加指定版本

在python3中要使用pip3
yum install pip3
#apt-get install pip3

pyerz: 软著的代码提取工具。 参考网址: https://pypi.org/project/pyerz/
注意:如果使用pyerz无法识别命令,说明没有加入到环境变量path中,可查看安装时的path路径(不知道可卸载重装),执行找到安装位置移动到自己的目标地址。

import yaml:
pip install pyyaml或者 pip3 install pyyaml

 

yaml: yaml文件的读取解析

》pip3 install yaml
import yaml

if __name__ == '__main__':

    file = open('test.yml', 'r')
    fileData = file.read()
    file.close()
    yml = yaml.load(fileData, yaml.Loader)
    print(yml['TEST'])

BeautifulSoup: xml,html的文件的读取解析
> pip3 install bs4
> pip3 install lxml //如果有xml文件解析的话需要(BeautifulSoup couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?)
from bs4 import BeautifulSoup

if __name__ == '__main__':
    inpom = open("pom.xml").read()
    pom = BeautifulSoup(inpom, "xml")

 zlib :大多情况下使用pip安装不上,只能手动安装

wget http://www.zlib.net/zlib-1.3.1.tar.gz

./Configure

make && make install

pydantic (校验器): 

import re
from enum import Enum
from typing import Literal

from constants import *
from pydantic import validator, Field, BaseModel, conlist, field_validator, ValidationError


class GenderEnum(str, Enum):
    """
    str 表示定义枚举类型,也可以不定义
    """
    male = ''
    female = ''


class Person2(BaseModel):
    name: str = Field(min_length=2, max_length=10)
    age: int = Field(ge=6, le=16)
    phone: str = Field(min_length=11, max_lenght=11)

    gender2: conlist(item_type=str, min_length=1, max_length=10)  # 对list数据的约束
    gender3: GenderEnum
    gender: Literal['', ''] = Field(default='')

    @field_validator("phone",mode='before')
    def valid_phone(ins):
        result = re.match("^\d{11}$",ins)
        if not result:
            raise ValueError("非有效电话号码")
        return str(ins)  #mode=before先对数据进行str转化,防止str类型校验失败

    def __str__(self):
        return f"Person name:{self.name}, age:{self.age}, phone:{self.phone}, gender:{self.gender}"


try:
    # 带有pydantic的构造器,只能用关键字参数
    # person1 = Person2(name="", age="", phone="",gender="", gender2="", gender3="")
    person2 = Person2(name="张三", age=12, phone=18191250000,gender2=["A","B"], gender3="")
except ValidationError as err:
    print(err)

 attrs

# attrs
from enum import Enum
from typing import Optional

from attrs import define, field, validators


class GenderEnum(Enum):
    male = ""
    female = ""


def mytest(value):
    gender = ("", "")
    if not gender.__contains__(value):
        raise ValueError("值仅可以选择在男/女中")


@define
class Person3:
    """
    注意点: 1. 所有的都需要设定type属性类型
            2. 带有default的值要放在没有default的最后面,否则无效
    """
    name: str = field(validator=[validators.min_len(2), validators.max_len(10)])
    age: int = field(validator=[validators.ge(6), validators.le(18)])
    phone: Optional[int] = field(validator=validators.matches_re("^\d{11}$"))
    gender2:str = field(validator=[mytest])
    gender: str = field(default='')


try:
    person = Person3(name="", age="", phone="", gender="", gender2="")
except ValueError as err:
    print(err)

 pytest:

import learn_test_def as test2
import tests.test2 as t2
import pytest


@pytest.fixture
def set_up():
    print("开始测试")
    yield
    print("测试结束")

def test_mytest(set_up):
    print("Start")
    assert test2.my_sub(1,2) == 3, "数据不等"
    assert t2.add(1,2) == 3, "数据不等"

 

pysnooper:

import pysnooper

@pysnooper.snoop()
def count_down(n):
    while n > 0:
        yield n
        n -= 1

count = count_down(10)
for cn in count:
    print(cn)

 

 pickle:

序列化和反序列化

import pickle

list = ["AAA","BBB"]
file = open("list","wb")
pickle.dump(list, file)
file.close()

file = open("list","rb")
list2 = pickle.load(file)
file.close()
print(list2)

 

 

 

 

 

 

 

 



posted on 2024-03-26 23:31  zhaoqiang1980  阅读(109)  评论(0编辑  收藏  举报