0%

Python-其他专业领域

适用于跨行业的专业领域的 Python 模块,如:

  • Biopython:计算生物学,包含表生物序列和序列注释的类,以程序化方式访问生物信息的在线数据库
  • PsychoPy:专为认知科学家设计的库,可建立认知心理学和神经科学实验。
  • geopy:Python 地址编码工具箱。
  • whoosh:一个快速的纯 Python 搜索引擎库,version 2.7.4,2016 年的,OUT。
  • paho-mqtt:MQTT 操作库,使消息发布到 MQTT 服务器变得非常简单。
  • hack:黑客的库。

概述

Biopython

Biopython:计算生物学,包含表生物序列和序列注释的类,以程序化方式访问生物信息的在线数据库

  • 独立的模块扩展了 Biopython 的序列比对,蛋白质结构,群体遗传学,系统发育,序列基序和机器学习等功能。

序列操作

蛋白质结构

PsychoPy

PsychoPy:专为认知科学家设计的库,可建立认知心理学和神经科学实验。

  • 该库可以处理激励的表示,实验设计和数据收集的脚本。

geopy

geopy:Python 地址编码工具箱。

whoosh

whoosh:一个快速的纯 Python 搜索引擎库,version 2.7.4,2016 年的,OUT。

  • 参考文档
  • MeiliSearch
  • 其他搜索工具参考
    • Elasticsearch:基于 Lucene 的分布式可扩展的搜索服务器,而 Lucene 是一个基于 java 开发的全文检索引擎的架构,java,OUT
      • 基于 RESTful web 接口的全文搜索、实时分析扩展到上百台服务器
    • solr:基于 Lucene,XML 数据交互?JAVA?OUT
    • sphinx:高性能全文搜索软件包

基本语法

fields 数据类型

  • whoosh.fields.ID:索引为一个独立单元(即不被分为单独的单词)常用于文件路径、URL、时间、类别等
  • whoosh.fields.STORED:与文档存储在一起,但没有被索引,该 field type 不可搜索,用于在搜索结果中展示给用户的相关信息
  • whoosh.fields.KEYWORD:这个类型针对于空格或逗号间隔的关键词设计。可索引可搜索(部分存储)。为减少空间,不支持短语搜索。
  • whoosh.fields.TEXT:这个类型针对文档主体。存储文本及 term 的位置以允许短语搜索。
  • whoosh.fields.NUMERIC:这个类型专为数字设计,你可以存储整数或浮点数。
  • whoosh.fields.BOOLEAN:存储 bool 型
  • whoosh.fields.DATETIME:为 datetime object 而设计
  • whoosh.fields.NGRAM 和 whoosh.fields.NGRAMWORDS:将 fiel 文本和单独的 term 分成 N-grams

paho-mqtt

paho-mqtt:MQTT 操作库,使消息发布到 MQTT 服务器变得非常简单。

1
pip install paho-mqtt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from paho.mqtt import client as mqtt_client

broker = 'broker.emqx.io' # 连接地址
port = 1883
topic = "/python/mqtt"
client_id = f'python-mqtt-{random.randint(0, 1000)}'


# 连接回调函数
def connect_mqtt():
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
# Set Connecting Client ID
client = mqtt_client.Client(client_id)
client.on_connect = on_connect
client.connect(broker, port)
return client

# 发布消息
def publish(client):
msg_count = 0
while True:
time.sleep(1)
msg = f"messages: {msg_count}"
result = client.publish(topic, msg)
# result: [0, 1]
status = result[0]
if status == 0:
print(f"Send `{msg}` to topic `{topic}`")
else:
print(f"Failed to send message to topic {topic}")
msg_count += 1

# 订阅消息
def subscribe(client: mqtt_client):
def on_message(client, userdata, msg):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")

client.subscribe(topic)
client.on_message = on_message

hack

hack:黑客的库。

homeassistant

homeassistant:智能家居,通过统一平台,控制所有智能设备

  • 官方支持的设备
  • 网关,需要米家 app 是开发者帐号登录,小米IoT开发者平台现阶段暂仅面向智能家居、智能家电、健康可穿戴、出行车载等领域的企业开放 更多类型开发者支持敬请关注平台后续更新,令人失望,**
    • 很失望
    • 后来,发现有 n 种方式实现 homeassistant 连接小米的相关设备,好过些了
1
2
3
4
5
6
7
8
9
10
11
# 1.安装
pip install homeassistance

# 建议安装
pip install colorlog


# 2.运行
hass --open-ui
pip install aiohttp_cors
pip install python-miio

连接小米设备

MIoT-Spec:MIoT Specification:小米 IoT 设备协议规范:小米 IoT 平台根据硬件产品的联网方式、产品功能的特点、用户使用场景的特征和用户对硬件产品使用体验的要求,设计的描述硬件产品功能定义的标准规范。

  • 方案一:通过 HACS 安装,搜索“Xiaomi Miot Auto”,请认准“Xiaomi Miot Auto

  • 方案二:手动安装

    • 进入 Releases 下载最新版本
    • 解压后复制 xiaomi_miot.zip 里的内容到至 HA 根目录下的 custom_components/xiaomi_miot
    • 重启 HomeAssistant
  • 如无必要,勿增实体,我选择了方案二

  • 附:早期探索方案中有个取各设备的 API 和 Token 的脚本不错,但不如上述方案二一键全连便捷。

    1
    2
    3
    pip3 install pycryptodome pybase64 requests
    python3 token_extractor.py
    # 需登录,most used和

tushare

tushare:库

faker

faker:专业造假的 Python 库

1
pip install faker
  • zh_CN - Chinese (China Mainland)
  • zh_TW - Chinese (China Taiwan)
  • en_US - English (United States)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from faker import Faker

fake=Faker(locale='zh_CN')
fake.name()
fake.address()


from faker import Faker
from faker.providers import internet

# 创建 Faker 实例
fake = Faker(['zh_CN', 'en_US']) # 支持多语言
fake.add_provider(internet)

# 生成基本数据
print(f"姓名: {fake.name()}")
print(f"地址: {fake.address()}")
print(f"邮箱: {fake.email()}")
print(f"手机: {fake.phone_number()}")

# 生成一组用户数据
def generate_users(num):
users = []
for _ in range(num):
users.append({
'id': fake.unique.random_number(),
'name': fake.name(),
'email': fake.email(),
'address': fake.address(),
'company': fake.company(),
'job': fake.job(),
'phone': fake.phone_number(),
'birthday': fake.date_of_birth().isoformat()
})
return users

# 生成固定随机数据
Faker.seed(12345)
print(fake.name()) # 每次运行都会生成相同的名字

# 生成特定格式的数据
print(fake.bothify(text="Product????-###?"))
print(fake.credit_card_number())
print(fake.ipv4_private())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 地理信息类
city_suffix() # 市,县
country() # 国家
country_code() # 国家编码
district() # 区
geo_coordinate() # 地理坐标
latitude() # 地理坐标(纬度)longitude() # 地理坐标(经度)postcode() # 邮编
province() # 省份
address() # 详细地址
street_address() # 街道地址
street_name() # 街道名
street_suffix() # 街、路


# 基础信息类
ssn() # 生成身份证号
bs() # 随机公司服务名
company() # 随机公司名(长)company_prefix() # 随机公司名(短)company_suffix() # 公司性质,如'信息有限公司'credit_card_expire() # 随机信用卡到期日,如'03/30'credit_card_full() # 生成完整信用卡信息
credit_card_number() # 信用卡号
credit_card_provider() # 信用卡类型
credit_card_security_code() # 信用卡安全码
job() # 随机职位
first_name_female() # 女性名
first_name_male() # 男性名
name() # 随机生成全名
name_female() # 男性全名
name_male() # 女性全名
phone_number() # 随机生成手机号
phonenumber_prefix() # 随机生成手机号段,如
# 邮箱信息类
ascii_company_email() # 随机
ASCII公司邮箱名
ascii_email() # 随机
ASCII邮箱 # company_email() # 公司邮箱
email() # 普通邮箱
safe_email() # 安全邮箱

# 网络基础信息类
domain_name() # 生成域名
domain_word() # 域词(即,不包含后缀)ipv4() # 随机
IP4地址
ipv6() # 随机
IP6地址
mac_address() # 随机
MAC地址
tld() # 网址域名后缀(.com,.net.cn,等等,不包括.)uri() # 随机
URI地址
uri_extension() # 网址文件后缀
uri_page() # 网址文件(不包含后缀)uri_path() # 网址文件路径(不包含文件名)url() # 随机
URL地址
user_name() # 随机用户名
image_url() # 随机
URL地址
# 浏览器信息类
chrome() # 随机生成
Chrome的浏览器
user_agent信息
firefox() # 随机生成
FireFox的浏览器
user_agent信息
internet_explorer() # 随机生成
IE的浏览器
user_agent信息
opera() # 随机生成
Opera的浏览器
user_agent信息
safari() # 随机生成
Safari的浏览器
user_agent信息
linux_platform_token() # 随机
Linux信息
user_agent() # 随机
user_agent信息

# 数字信息
numerify() # 三位随机数字
random_digit() # 0~9随机数
random_digit_not_null() # 1~9的随机数
random_int() # 随机数字,默认
0~9999,可以通过设置
min,max来设置
random_number() # 随机数字,参数
digits设置生成的数字位数
pyfloat() # 随机
Float数字
pyint() # 随机
Int数字(参考
random_int()参数)pydecimal() # 随机
Decimal数字(参考
pyfloat参数)

# 文本加密类
pystr() # 随机字符串
random_element() # 随机字母
random_letter() # 随机字母
paragraph() # 随机生成一个段落
paragraphs() # 随机生成多个段落
sentence() # 随机生成一句话
sentences() # 随机生成多句话,与段落类似
text() # 随机生成一篇文章
word() # 随机生成词语
words() # 随机生成多个词语,用法与段落,句子,类似
binary() # 随机生成二进制编码
boolean() # True/Falselanguage_code() # 随机生成两位语言编码
locale() # 随机生成语言/国际 信息
md5() # 随机生成
MD5null_boolean() # NULL/True/Falsepassword() # 随机生成密码,可选参数 # length # 密码长度;special_chars # 是否能使用特殊字符;digits # 是否包含数字;upper_case # 是否包含大写字母;lower_case # 是否包含小写字母
sha1() # 随机
SHA1sha256() # 随机
SHA256uuid4() # 随机UUID

smtplib

smtplib:发送电子邮件的模块

给博主来一杯卡布奇诺