适用于跨行业的专业领域的 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 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) 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) 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 平台根据硬件产品的联网方式、产品功能的特点、用户使用场景的特征和用户对硬件产品使用体验的要求,设计的描述硬件产品功能定义的标准规范。
tushare
tushare:库
faker
faker:专业造假的 Python 库
- 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
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() province() address() street_address() street_name() street_suffix()
ssn() bs() company() 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邮箱 email() safe_email()
domain_name() domain_word() IP4地址 ipv6() IP6地址 mac_address() MAC地址 tld() URI地址 uri_extension() uri_page() 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() random_digit_not_null() 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() locale() md5() MD5null_boolean() sha1() SHA1sha256() SHA256uuid4()
|
smtplib
smtplib:发送电子邮件的模块