介绍
是一个用于生成假数据的 Python 库,支持多种语言和数据类型。它的设计目标是提供一个简单而灵活的 API,以便用户能够快速生成所需的假数据。官方文档:mimesis主要特点:
- 多语言:支持47种不同国家语言
- 可扩展性:支持自定义数据生成和自定义数据处理
- 性能:比faker快很多,尤其是大数据生成场景
- 数据类型:数据类型比较丰富
安装
pip install mimesis基本用法
创建Generic 实例
Mimesis 的核心是 类,可以通过它来生成各种类型的数据。可以指定语言(如中文、英文等)来生成相应语言的数据。
from mimesis import Generic
# 创建 Generic 实例,指定语言
generic = Generic('zh') # 中文生成基本数据
Mimesis 提供了多种数据生成器,可以通过 实例访问它们
from mimesis import Generic
# 创建 Generic 实例,指定中文
generic = Generic('zh')
# 生成随机中文名称
print("随机生成的中文名称:", generic.person.full_name())
# 生成随机电子邮件
print("随机生成的电子邮件:", generic.person.email())语言
from mimesis.locales import Locale示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例 指定语言为中文
generic = Generic(Locale.ZH)
print("随机生成的电话号码:", generic.person.telephone())
# 随机生成的电话号码: +86 684-02846965from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例 指定语言为中文
generic = Generic(Locale.ZH)
print("随机生成的电话号码:", generic.person.telephone())
# 随机生成的电话号码: +86 684-02846965
# 使用override_locale修改语言指定为英语
with generic.person.override_locale(Locale.EN):
print("Randomly generated phone numbers:", generic.person.telephone())
# Randomly generated phone numbers: +19753687584
print("随机生成的电话号码:", generic.person.telephone())
# 随机生成的电话号码: +86 919-00002054注意:
INFO
override_locale覆盖语言时,只在with里生效,在此上下文中生成的所有数据都将使用该设定的语言,离开上下文时失效
数据类型
| 描述 | |
|---|---|
| 生成完整地址 | |
| 生成国际电话区号 | |
| 生成城市名称 | |
| 生成大陆名称 | |
| 生成经纬度信息 | |
| 生成国家名称 | |
| 生成国家代码 | |
| 生成国家的 emoji 标志 | |
| 获取默认国家名称 | |
| 生成联邦主体(如州或省)的名称 | |
| 生成国际航空运输协会(IATA)机场代码 | |
| 生成国际民用航空组织(ICAO)机场代码 | |
| 生成国际直接拨号区号(ISD)代码 | |
| 生成随机纬度 | |
| 生成随机经度 | |
| 生成随机邮政编码 | |
| 生成随机的行政区划(如县或市) | |
| 生成随机的省份名称 | |
| 生成随机的地区名称 | |
| 生成随机的州名称 | |
| 生成随机的街道名称 | |
| 生成随机的街道号码 | |
| 生成随机的街道后缀(如街、路、巷等) | |
| 生成随机的邮政编码 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例 指定语言为中文
generic = Generic(Locale.ZH)
print("完整地址:", generic.address.address()) # 完整地址: 朝阳门南九条1007号
print("国际电话区号:", generic.address.calling_code()) # 国际电话区号: +86
print("城市:", generic.address.city()) # 城市: 岳阳市
print("大陆名称:", generic.address.continent()) # 大陆名称: 非洲
# 经纬度: 'longitude': 34.973839, 'latitude': 53.728978}
print("经纬度:", generic.address.coordinates())
print("国家:", generic.address.country()) # 国家: 阿鲁巴
print("国家代码:", generic.address.country_code()) # 国家代码: ST
print("国家 emoji:", generic.address.country_emoji_flag()) # 国家 emoji: 🇪🇸
print("默认国家:", generic.address.default_country()) # 默认国家: 中国
print("联邦主体", generic.address.federal_subject()) # 联邦主体 河北省
print("IATA 代码:", generic.address.iata_code()) # IATA 代码: LKG
print("ICAO 代码:", generic.address.icao_code()) # ICAO 代码: KPEQ
print("ISD 代码:", generic.address.isd_code()) # ISD 代码: +222
print("纬度:", generic.address.latitude()) # 纬度: 8.179587
print("经度:", generic.address.longitude()) # 经度: 83.916151
print("邮政编码:", generic.address.postal_code()) # 邮政编码: 562583
print("行政区划:", generic.address.prefecture()) # 行政区划: 四川省
print("省份:", generic.address.province()) # 省份: 吉林省
print("地区:", generic.address.region()) # 地区: 海南省
print("州:", generic.address.state()) # 州: 西藏自治区
print("街道名称:", generic.address.street_name()) # 街道名称: 葛化
print("街道号码:", generic.address.street_number()) # 街道号码: 802
print("街道后缀:", generic.address.street_suffix()) # 街道后缀: 街
print("美国邮政编码:", generic.address.zip_code()) # 美国邮政编码: 974654中国地址生成
提供的地址不是全地址,没有省市信息,我们可以自定义一个数据生成器,生成完整的地址,正好示例:
from mimesis import Generic
from mimesis.locales import Locale
from mimesis.providers import BaseProvider
import random
class ChineseAddressProvider(BaseProvider):
class Meta:
name = "zh_address"
def __init__(self, seed=None):
super().__init__(seed=seed)
self.street_suffixes = ["号", "街", "巷", "道", "路"]
def address(self):
province = generic.address.province() # 使用 Mimesis 生成省份
city = generic.address.city() # 使用 Mimesis 生成城市
street_name = generic.address.street_name() # 使用 Mimesis 生成街道名称
street_number = random.randint(1, 999) # 随机生成街道号码
address = (
f"{province}{city}{street_name}{street_number}{random.choice(self.street_suffixes)}")
return address
# 创建 Generic 实例并添加自定义提供者
generic = Generic(Locale.ZH)
generic.add_provider(ChineseAddressProvider)
# 使用自定义生成器
for _ in range(5): # 生成5个随机地址
print(generic.zh_address.address())
# 安徽省晋城市涨渡湖29道
# 江苏省嘉峪关市新沟桥66路
# 湖北省娄底市 江堤164巷
# 陕西省茂名市北城480路
# 山西省保定市将军路927巷注意:
INFO
这里随机生成的地址省市关系不是一一对应的,不过对于数据测试完全够用了,有强迫症的同学可以使用Mimesis 里提供的BaseDataProvider基类实现自定义数据,来实现省市对应关系
金融
| 描述 | |
|---|---|
| 返回随机的银行名称。 | |
| 返回随机的公司名称。 | |
| 返回随机的公司类型,例如 "私营公司"、"上市公司" 等。 | |
| 返回随机的加密货币 ISO 代码,例如 "BTC", "ETH" 等。 | |
| 返回随机的加密货币符号,例如 "₿"(比特币符号)。 | |
| 返回随机的货币 ISO 代码,例如 "USD", "EUR" 等。 | |
| 返回随机的货币符号,例如 "$", "€" 等。 | |
| 返回随机的价格,通常在指定的范围内。 | |
| 返回以比特币为单位的随机价格。 | |
| 返回随机的股票交易所名称,例如 "NASDAQ", "NYSE" 等。 | |
| 返回随机的股票名称。 | |
| 返回随机的股票代码,例如 "AAPL", "GOOGL" 等。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
generic = Generic(Locale.ZH)
# 获取 Finance 类型
finance = generic.finance
# 生成随机金融数据
print("随机银行名称:", finance.bank())
print("随机公司名称:", finance.company())
print("随机公司类型:", finance.company_type())
print("随机加密货币 ISO 代码:", finance.cryptocurrency_iso_code())
print("随机加密货币符号:", finance.cryptocurrency_symbol())
print("随机货币 ISO 代码:", finance.currency_iso_code())
print("随机货币符号:", finance.currency_symbol())
print("随机价格:", finance.price())
print("随机价格(以比特币为单位):", finance.price_in_btc())
print("随机股票交易所:", finance.stock_exchange())
print("随机股票名称:", finance.stock_name())
print("随机股票代码:", finance.stock_ticker())
# 随机银行名称: China Merchants Rural Commercial Bank Co., Ltd.
# 随机公司名称: 中国网络通信
# 随机公司类型: 有限公司
# 随机加密货币 ISO 代码: IOT
# 随机加密货币符号: ₿
# 随机货币 ISO 代码: CNY
# 随机货币符号: ¥
# 随机价格: 1272.26
# 随机价格(以比特币为单位): 1.7873199
# 随机股票交易所: AMEX
# 随机股票名称: Eaton Vance Tax-Managed Buy-Write Strategy Fund
# 随机股票代码: ICH日期
| 描述 | |
|---|---|
| 批量生成随机的日期时间。 | |
| 返回随机的世纪(罗马数字)。 | |
| 返回随机的日期。 | |
| 返回随机的日期时间。 | |
| 返回随机的月份中的某一天(1-31)。 | |
| 返回随机的一周中的某一天(0-6,0表示星期一(2025年01月13日))。 | |
| 返回随机的持续时间。 | |
| 返回格式化的日期字符串。 | |
| 返回格式化的时间字符串。 | |
| 返回随机的 GMT 偏移量,例如 "+08:00"。 | |
| 返回随机的月份(1-12)。 | |
| 返回随机的周期性描述,例如 "每周"、"每月"。 | |
| 返回随机的时间。 | |
| 返回随机的时间戳(自1970年1月1日以来的秒数)。 | |
| 返回随机的时区名称,例如 "Asia/Shanghai"。 | |
| 返回随机的周日(2025年01月19日)期字符串。 | |
| 返回随机的年份。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
from datetime import datetime
generic = Generic(Locale.ZH)
# 获取 Finance 类型
finance = generic.finance
date_start = datetime(2020, 1, 1)
date_end = datetime(2025, 1, 1)
# 生成随机日期和时间数据
print("批量生成随机日期时间:", generic.datetime.bulk_create_datetimes(date_start=date_start, date_end=date_end, days=1))
print("随机世纪:", generic.datetime.century())
print("随机日期:", generic.datetime.date())
print("随机日期时间:", generic.datetime.datetime())
print("随机月份中的某一天:", generic.datetime.day_of_month())
print("随机的一周中的某一天:", generic.datetime.day_of_week())
print("随机持续时间:", generic.datetime.duration())
print("格式化的日期:", generic.datetime.formatted_date())
print("格式化的时间:", generic.datetime.formatted_time())
print("随机 GMT 偏移量:", generic.datetime.gmt_offset())
print("随机月份:", generic.datetime.month())
print("随机周期性描述:", generic.datetime.periodicity())
print("随机时间:", generic.datetime.time())
print("随机时间戳:", generic.datetime.timestamp())
print("随机时区名称:", generic.datetime.timezone())
print("随机周日期:", generic.datetime.week_date())
print("随机年份:", generic.datetime.year())
# 批量生成随机日期时间: [datetime.datetime(2020, 1, 2, 0, 0), datetime.datetime(2020, 1, 3, 0, 0)...]
# 随机世纪: X
# 随机日期: 2014-10-21
# 随机日期时间: 2025-03-30 12:50:19.646445
# 随机月份中的某一天: 6
# 随机的一周中的某一天: 星期二
# 随机持续时间: 0:01:00
# 格式化的日期: 2025-08-09
# 格式化的时间: 18:11:27
# 随机 GMT 偏移量: UTC +03:00
# 随机月份: 十二月
# 随机周期性描述: 有时
# 随机时间: 23:52:15.989878
# 随机时间戳: 1760093730
# 随机时区名称: Australia/Currie
# 随机周日期: 2024-W7
# 随机年份: 2020食物
| 描述 | |
|---|---|
| 返回随机的菜肴名称。 | |
| 返回随机的饮料名称。 | |
| 返回随机的水果名称。 | |
| 返回随机的香料名称。 | |
| 返回随机的蔬菜名称。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机食物相关数据
print("随机菜肴:", generic.food.dish())
print("随机饮料:", generic.food.drink())
print("随机水果:", generic.food.fruit())
print("随机香料:", generic.food.spices())
print("随机蔬菜:", generic.food.vegetable())
# 随机菜肴: 均安煎鱼饼
# 随机饮料: 凉茶
# 随机水果: 西柚
# 随机香料: 酱油
# 随机蔬菜: 瓠瓜个人数据
| 描述 | |
|---|---|
| 返回随机的学位。 | |
| 返回随机的出生日期。 | |
| 返回随机的血型。 | |
| 返回随机的电子邮件地址。 | |
| 返回随机的名字。 | |
| 返回随机的全名。 | |
| 返回随机的性别。 | |
| 返回随机的性别代码。 | |
| 返回随机的性别符号。 | |
| 返回随机的身高(以厘米为单位)。 | |
| 返回随机的身份证明。 | |
| 返回随机的语言。 | |
| 返回随机的姓氏。 | |
| 返回随机的名字(可以是全名或姓)。 | |
| 返回随机的国籍。 | |
| 返回随机的职业。 | |
| 返回随机的密码。 | |
| 返回随机的电话号码。 | |
| 返回随机的政治观点。 | |
| 返回随机的性别(与 gender 相同)。 | |
| 返回随机的姓氏(与 last_name 相同)。 | |
| 返回随机的电话。 | |
| 返回随机的称谓。 | |
| 返回随机的大学名称。 | |
| 返回随机的用户名。 | |
| 返回随机的观点。 | |
| 返回随机的体重(以千克为单位)。 | |
| 返回随机的世界观。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机个人相关数据
print("学位:", generic.person.academic_degree())
print("出生日期:", generic.person.birthdate())
print("血型:", generic.person.blood_type())
print("电子邮件:", generic.person.email())
print("名字:", generic.person.first_name())
print("全名:", generic.person.full_name())
print("性别:", generic.person.gender())
print("性别代码:", generic.person.gender_code())
print("性别符号:", generic.person.gender_symbol())
print("身高 (m):", generic.person.height())
print("身份证明:", generic.person.identifier())
print("语言:", generic.person.language())
print("姓氏:", generic.person.last_name())
print("国籍:", generic.person.nationality())
print("职业:", generic.person.occupation())
print("密码:", generic.person.password())
print("电话号码:", generic.person.phone_number())
print("政治观点:", generic.person.political_views())
print("性别 (sex):", generic.person.sex())
print("姓 (surname):", generic.person.surname())
print("电话:", generic.person.telephone())
print("称谓:", generic.person.title())
print("大学:", generic.person.university())
print("用户名:", generic.person.username())
print("观点:", generic.person.views_on())
print("体重 (kg):", generic.person.weight())
print("世界观:", generic.person.worldview())
# 学位: 研究生
# 出生日期: 2012-09-18
# 血型: B+
# 电子邮件: benefit1800@example.org
# 名字: 炜
# 全名: 善仁 余
# 性别: 男性
# 性别代码: 2
# 性别符号: ♂
# 身高 (cm): 1.94
# 身份证明: 62-05/56
# 语言: 毛利语
# 姓氏: 蒙
# 国籍: 马其顿
# 职业: 电机修护工
# 密码: +JRR01vN
# 电话号码: +86 305-16886564
# 政治观点: 社会主義
# 性别 (sex): 女性
# 姓 (surname): 闵
# 电话: +86 128-56394396
# 称谓: 名誉博士
# 大学: 上海济光职业技术学院
# 用户名: level_1960
# 观点: 中立
# 体重 (kg): 42
# 世界观: 不可知論中国人名生成
默认情况下,Mimesis 方法生成的名字不符合中国人的命名习惯,虽然方法提供了参数,但是名字中间有空格,因此我们需要自定义生成逻辑。
示例:
from mimesis import Generic
from mimesis.locales import Locale
from mimesis import BaseProvider
class ChinesePersonNameProvider(BaseProvider):
class Meta:
name = "zh_person_name"
def name(self):
name = generic.person.name()
surname = generic.person.surname()
return f"{surname}{name}"
# 创建 Generic 实例并添加自定义提供者
generic = Generic(Locale.ZH)
generic.add_provider(ChinesePersonNameProvider)
for _ in range(5):
print(generic.zh_person_name.name())
# 薄梣
# 秦俊熙
# 文坤灵
# 慕小琴
# 弘迎琦中国电话号码生成
Mimesis 默认的电话号码生成可能不符合中国的格式。中国的手机号码通常是以 1 开头,后面跟随 10 位数字,且第二位数字通常是 3、4、5、6、7、8 或 9。
示例:
from mimesis import Generic
from mimesis.locales import Locale
from mimesis import BaseProvider
import random
class ChinesePhoneProvider(BaseProvider):
class Meta:
name = "zh_phone"
def phone(self):
first_digit = '1'
second_digit = random.choice(['3', '4', '5', '6', '7', '8', '9'])
# 生成后面的8位数字
remaining_digits = ''.join(random.choices('0123456789', k=9))
return f"{first_digit}{second_digit}{remaining_digits}"
# 创建 Generic 实例并添加自定义提供者
generic = Generic(Locale.ZH)
generic.add_provider(ChinesePhoneProvider)
for _ in range(5):
print(generic.zh_phone.phone())
# 14371713842
# 16065379231
# 14812021273
# 19748191338
# 17284200423文本
| 描述 | |
|---|---|
| 返回随机的字母表。 | |
| 返回随机的答案。 | |
| 返回随机的颜色名称。 | |
| 返回随机的表情符号。 | |
| 返回随机的十六进制颜色值。 | |
| 返回随机的级别。 | |
| 返回随机的引用。 | |
| 返回随机的RGB颜色值。 | |
| 返回随机的句子。 | |
| 返回随机的文本。 | |
| 返回随机的标题。 | |
| 返回随机的单词。 | |
| 返回随机的单词列表。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机文本相关数据
print("字母表:", generic.text.alphabet())
print("答案:", generic.text.answer())
print("颜色:", generic.text.color())
print("表情符号:", generic.text.emoji())
print("十六进制颜色:", generic.text.hex_color())
print("级别:", generic.text.level())
print("引用:", generic.text.quote())
print("RGB颜色:", generic.text.rgb_color())
print("句子:", generic.text.sentence())
print("文本:", generic.text.text())
print("标题:", generic.text.title())
print("单词:", generic.text.word())
print("单词列表:", generic.text.words())
# 字母表: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
# 答案: 否
# 颜色: 深灰
# 表情符号: 🩷
# 十六进制颜色: #6a3c03
# 级别: 略微
# 引用: 人是可以快乐地生活的,只是我们自己选择了复杂,选择了叹息!
# RGB颜色: (20, 124, 216)
# 句子: 为了专门经营西北,次年,他让位于其子惠文王何,自号主父
# 文本: 于是,下令筑长城,自代并阴山(今内蒙古大青山、乌拉特山)而西,直抵大河(今内蒙古乌加河...
# 标题: 因此,一到成年,尽为甲骑
# 单词: 重点
# 单词列表: ['汇集', '活力', '武装', '难点', '重点']二进制文件
| 描述 | |
|---|---|
| 返回随机的音频文件名。 | |
| 返回随机的压缩文件名。 | |
| 返回随机的文档文件名。 | |
| 返回随机的图像文件名。 | |
| 返回随机的视频文件名。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机二进制文件相关数据
print("音频文件:", generic.binaryfile.audio())
print("压缩文件:", generic.binaryfile.compressed())
print("文档文件:", generic.binaryfile.document())
print("图像文件:", generic.binaryfile.image())
print("视频文件:", generic.binaryfile.video())code编码
| 描述 | |
|---|---|
| 返回随机的 EAN 码。 | |
| 返回随机的 IMEI 码。 | |
| 返回随机的 ISBN 码。 | |
| 返回随机的 ISSN 码。 | |
| 返回随机的 locale 代码。 | |
| 返回随机的 PIN 码。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机code相关数据
print("EAN 码:", generic.code.ean())
print("IMEI 码:", generic.code.imei())
print("ISBN 码:", generic.code.isbn())
print("ISSN 码:", generic.code.issn())
print("Locale 代码:", generic.code.locale_code())
print("PIN 码:", generic.code.pin())
# EAN 码: 8928510699258
# IMEI 码: 012336009979174
# ISBN 码: 265-1-22746-480-4
# ISSN 码: 1179-2805
# Locale 代码: pl
# PIN 码: 6173随机选择
| 描述 | |
|---|---|
| 从给定的选项中随机选择一个值。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 定义一个选项列表
options = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']
# 从选项中随机选择一个
random_choice = generic.choice.choice(options)
# 输出随机选择的结果
print("随机选择的水果:", random_choice)
# 随机选择的水果: 西瓜
# 随机选择多个
random_choice = generic.choice.choice(options, length=3)
# 输出随机选择的结果
print("随机选择的水果:", random_choice)
# 随机选择的水果: ['香蕉', '橙子', '葡萄']加密
| 描述 | |
|---|---|
| 返回随机的哈希值。 | |
| 返回随机的助记词短语。 | |
| 返回随机的令牌字节。 | |
| 返回随机的十六进制令牌。 | |
| 返回随机的 URL 安全令牌。 | |
| 返回随机的 UUID。 | |
| 返回随机的 UUID 对象。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机加密相关数据
print("哈希值:", generic.cryptographic.hash())
print("助记词短语:", generic.cryptographic.mnemonic_phrase())
print("令牌字节:", generic.cryptographic.token_bytes(16)) # 生成16字节的令牌
print("十六进制令牌:", generic.cryptographic.token_hex(16)) # 生成16字节的十六进制令牌
print("URL 安全令牌:", generic.cryptographic.token_urlsafe(16)) # 生成16字节的 URL 安全令牌
print("UUID:", generic.cryptographic.uuid())
print("UUID 对象:", generic.cryptographic.uuid_object())
# 哈希值: d87f7004072217c428bd3bc2dde4a6d2b21494e3
# 助记词短语: average glow final elegant episode
# 令牌字节: b":\x97'-Y\xf7\x89f\xa8\xe5g?\x8f;@\x9b"
# 十六进制令牌: ed9a2531ad811264bcc5b41bd3a35061
# URL 安全令牌: nqidCt_I8kkmQkpNM7iHQg
# UUID: 19e061da-75e9-4623-9c1e-f2a74082b77a
# UUID 对象: b3867deb-5df6-4e10-b9ad-76c090b067e2软件开发
| 描述 | |
|---|---|
| 返回随机的布尔值。 | |
| 返回随机的日历版本号。 | |
| 返回随机的可用性(ility)属性。 | |
| 返回随机的操作系统名称。 | |
| 返回随机的编程语言。 | |
| 返回随机的软件许可证。 | |
| 返回随机的开发阶段。 | |
| 返回随机的系统质量属性。 | |
| 返回随机的版本号。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机开发相关数据
print("布尔值:", generic.development.boolean())
print("日历版本:", generic.development.calver())
print("可用性:", generic.development.ility())
print("操作系统:", generic.development.os())
print("编程语言:", generic.development.programming_language())
print("软件许可证:", generic.development.software_license())
print("开发阶段:", generic.development.stage())
print("系统质量属性:", generic.development.system_quality_attribute())
print("版本号:", generic.development.version())
# 布尔值: False
# 日历版本: 2025.12.24
# 可用性: affordability
# 操作系统: Lubuntu
# 编程语言: Lisp
# 软件许可证: GNU General Public License (GPL)
# 开发阶段: Alpha
# 系统质量属性: evolvability
# 版本号: 41.41.34文件
| 描述 | |
|---|---|
| 返回随机的文件扩展名。 | |
| 返回随机的文件名。 | |
| 返回随机的 MIME 类型。 | |
| 返回随机的文件大小(字节)。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机文件相关数据
print("文件扩展名:", generic.file.extension())
print("文件名:", generic.file.file_name())
print("MIME 类型:", generic.file.mime_type())
print("文件大小 (字节):", generic.file.size())
# 文件扩展名: .bmp
# 文件名: general.m3u
# MIME 类型: image/vnd.radiance
# 文件大小 (字节): 73 GB硬件
| 描述 | |
|---|---|
| 返回随机的 CPU 名称。 | |
| 返回随机的 CPU 代号。 | |
| 返回随机的 CPU 频率。 | |
| 返回随机的代数。 | |
| 返回随机的图形卡名称。 | |
| 返回随机的制造商名称。 | |
| 返回随机的手机型号。 | |
| 返回随机的 RAM 大小。 | |
| 返回随机的 RAM 类型。 | |
| 返回随机的分辨率。 | |
| 返回随机的屏幕大小。 | |
| 返回随机的存储类型(SSD 或 HDD)。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机硬件相关数据
print("CPU:", generic.hardware.cpu())
print("CPU 代号:", generic.hardware.cpu_codename())
print("CPU 频率:", generic.hardware.cpu_frequency())
print("代数:", generic.hardware.generation())
print("图形卡:", generic.hardware.graphics())
print("制造商:", generic.hardware.manufacturer())
print("手机型号:", generic.hardware.phone_model())
print("RAM 大小:", generic.hardware.ram_size())
print("RAM 类型:", generic.hardware.ram_type())
print("分辨率:", generic.hardware.resolution())
print("屏幕大小:", generic.hardware.screen_size())
print("存储类型:", generic.hardware.ssd_or_hdd())
# CPU: Apple M1
# CPU 代号: Orchid Island
# CPU 频率: 2.2GHz
# 代数: 8th Generation
# 图形卡: AMD Radeon RX Vega 64
# 制造商: Lenovo
# 手机型号: iPhone 14
# RAM 大小: 64GB
# RAM 类型: DDR3
# 分辨率: 2048x1536
# 屏幕大小: 13.3″
# 存储类型: Intel 512GB HDD网络
| 描述 | |
|---|---|
| 返回随机的自治系统编号(ASN)。 | |
| 返回随机的内容类型。 | |
| 返回随机的域名系统名称(DSN)。 | |
| 返回随机的主机名。 | |
| 返回随机的 HTTP 方法。 | |
| 返回随机的 HTTP 请求头。 | |
| 返回随机的 HTTP 响应头。 | |
| 返回随机的 HTTP 状态码。 | |
| 返回随机的 HTTP 状态消息。 | |
| 返回随机的 IPv4 地址。 | |
| 返回随机的 IPv4 地址对象。 | |
| 返回随机的 IPv4 地址和端口。 | |
| 返回随机的 IPv6 地址。 | |
| 返回随机的 IPv6 地址对象。 | |
| 返回随机的 MAC 地址。 | |
| 返回随机的路径。 | |
| 返回随机的端口号。 | |
| 返回随机的公共 DNS。 | |
| 返回随机的查询参数。 | |
| 返回随机的查询字符串。 | |
| 返回随机的 slug。 | |
| 返回随机的特殊 IPv4 地址。 | |
| 返回随机的特殊 IPv4 地址对象。 | |
| 返回随机的股票图片 URL。 | |
| 返回随机的顶级域名。 | |
| 返回随机的顶级域名。 | |
| 返回随机的 URI。 | |
| 返回随机的 URL。 | |
| 返回随机的用户代理字符串。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机网络相关数据
print("自治系统编号 (ASN):", generic.internet.asn())
print("内容类型:", generic.internet.content_type())
print("域名系统名称 (DSN):", generic.internet.dsn())
print("主机名:", generic.internet.hostname())
print("HTTP 方法:", generic.internet.http_method())
print("HTTP 请求头:", generic.internet.http_request_headers())
print("HTTP 响应头:", generic.internet.http_response_headers())
print("HTTP 状态码:", generic.internet.http_status_code())
print("HTTP 状态消息:", generic.internet.http_status_message())
print("IPv4 地址:", generic.internet.ip_v4())
print("IPv4 地址对象:", generic.internet.ip_v4_object())
print("IPv4 地址和端口:", generic.internet.ip_v4_with_port())
print("IPv6 地址:", generic.internet.ip_v6())
print("IPv6 地址对象:", generic.internet.ip_v6_object())
print("MAC 地址:", generic.internet.mac_address())
print("路径:", generic.internet.path())
print("端口号:", generic.internet.port())
print("公共 DNS:", generic.internet.public_dns())
print("查询参数:", generic.internet.query_parameters())
print("查询字符串:", generic.internet.query_string())
print("Slug:", generic.internet.slug())
print("特殊 IPv4 地址:", generic.internet.special_ip_v4())
print("特殊 IPv4 地址对象:", generic.internet.special_ip_v4_object())
print("股票图片 URL:", generic.internet.stock_image_url())
print("顶级域名:", generic.internet.tld())
print("顶级域名:", generic.internet.top_level_domain())
print("URI:", generic.internet.uri())
print("URL:", generic.internet.url())
print("用户代理:", generic.internet.user_agent())
# 自治系统编号 (ASN): AS3046628279
# 内容类型: image/tiff-fx
# 域名系统名称 (DSN): redis://junior.info:6379
# 主机名: john.jobs
# HTTP 方法: HEAD
# HTTP 请求头: {'Referer': 'https://motorcycle.mq/2023/11/19/http-resolve-awareness-heritage-chairman-greek', 'Authorization': 'Bearer 4a6270573847706869513251364469646d38467036545a546e356151384173474c53366877304e58634654354b535a776a6c6858536f5753664c33456a5631646254544a4e496b7477534e7a4f69666b37587a324e773d3d', 'Cookie': 'csrftoken=CSmSjauoJzbQeTB9db1fotcmJuxMOOxoRwjKu+GSVPg=; hits=cartoons', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; MANM; MANM; rv:11.0) like Gecko', 'X-CSRF-Token': '4a73784b465a3645514d4c2b44556f634a67527a4670304168596e315535695a41354278414767616948553d', 'Content-Type': 'text/vnd.ms-mediapackage', 'Content-Length': 2845, 'Connection': 'close', 'Cache-Control': 'no-cache', 'Accept': 'image/ief', 'Host': 'array.gm', 'Accept-Language': 'no'}
# HTTP 响应头: {'Allow': '*', 'Age': 45313, 'Server': 'cloudflare', 'Content-Type': 'application/atomicmail', 'X-Request-ID': '7e0d97ad25ab73a5c1499c053a7f577f', 'Content-Language': 'en', 'Content-Location': 'understanding/glory/memory/paint', 'Set-Cookie': 'csrftoken=ovQzwMXh7U74lG8ikL/iPvWOyRboM/IBgBhqdQeZ3SY=; carriers=pending; HttpOnly', 'Upgrade-Insecure-Requests': 1, 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': 1, 'Connection': 'close', 'X-Frame-Options': 'SAMEORIGIN', 'Content-Encoding': 'identity', 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Resource-Policy': 'same-site', 'Strict-Transport-Security': 'max-age=45313'}
# HTTP 状态码: 428
# HTTP 状态消息: 507 Insufficient Storage
# IPv4 地址: 34.154.204.140
# IPv4 地址对象: 235.118.56.86
# IPv4 地址和端口: 229.12.154.129:61804
# IPv6 地址: af24:4345:6e04:cc52:423d:644b:f948:ccc4
# IPv6 地址对象: c787:182a:426b:4c5a:e08d:6111:691b:3239
# MAC 地址: 00:16:3e:29:4d:d1
# 路径: recommended/extent/effective/tony/destruction
# 端口号: 38483
# 公共 DNS: 94.140.15.15
# 查询参数: {'northwest': 'syntax'}
# 查询字符串: pen=alice&decline=hp&hb=killed&explains=resistant&mention=amendments
# Slug: alive-lookup-lane-hockey-will-suppose-cl-hollywood-sam
# 特殊 IPv4 地址: 192.0.0.181
# 特殊 IPv4 地址对象: 192.0.0.9
# 股票图片 URL: https://source.unsplash.com/1920x1080?
# 顶级域名: .np
# 顶级域名: .dz
# URI: https://system.name/2017/11/04/responsibility-events-plants-buy-rom-processor-kit
# URL: https://hughes.zr/
# 用户代理: Mozilla/5.0 (iPad; CPU OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4数字
| 描述 | |
|---|---|
| 返回随机的复数。 | |
| 返回随机的复数列表。 | |
| 返回随机的十进制数。 | |
| 返回随机的十进制数列表。 | |
| 返回随机的浮点数。 | |
| 返回随机的浮点数列表。 | |
| 返回随机的增量值。 | |
| 返回随机的整数。 | |
| 返回随机的整数列表。 | |
| 返回随机的矩阵(二维列表)。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机数字相关数据
print("复数:", generic.numeric.complex_number())
print("复数列表:", generic.numeric.complexes())
print("十进制数:", generic.numeric.decimal_number())
print("十进制数列表:", generic.numeric.decimals())
print("浮点数:", generic.numeric.float_number())
print("浮点数列表:", generic.numeric.floats())
print("增量值:", generic.numeric.increment())
print("整数:", generic.numeric.integer_number())
print("整数列表:", generic.numeric.integers())
print("矩阵:", generic.numeric.matrix())
# 复数: (0.316365187155725+0.592702250638067j)
# 复数列表: [(0.484767924695028+0.863923097514897j), (0.3257533126486+0.406461205947471j)]
# 十进制数: -472.94806549501072368002496659755706787109375
# 十进制数列表: [Decimal('313.8311606790438190728309564292430877685546875')]
# 浮点数: -47.7286319588552
# 浮点数列表: [0.110549243328176, 0.777353752447723, 0.54090023658191, 0.60759909181232]
# 增量值: 1
# 整数: -81
# 整数列表: [5, 3, 7, 1, 3, 5, 0, 9, 5, 7]
# 矩阵: [[0.330638874658681, 0.105569620760485]]开发路径
| 描述 | |
|---|---|
| 返回随机的开发目录路径。 | |
| 返回随机的主目录路径。 | |
| 返回随机的项目目录路径。 | |
| 返回随机的根目录路径。 | |
| 返回随机的用户目录路径。 | |
| 返回随机的用户文件夹路径。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机路径相关数据
print("开发目录:", generic.path.dev_dir())
print("主目录:", generic.path.home())
print("项目目录:", generic.path.project_dir())
print("根目录:", generic.path.root())
print("用户目录:", generic.path.user())
print("用户文件夹:", generic.path.users_folder())
# 开发目录: /home/cornell/Dev/Kotlin
# 主目录: /home
# 项目目录: /home/playstation/Dev/PL-SQL/othnielia
# 根目录: /
# 用户目录: /home/dry
# 用户文件夹: /home/beings/Study支付
| 描述 | |
|---|---|
| 返回随机的比特币地址。 | |
| 返回随机的内容标识符(CID)。 | |
| 返回随机的信用卡过期日期。 | |
| 返回随机的信用卡网络名称。 | |
| 返回随机的信用卡号码。 | |
| 返回随机的信用卡持卡人姓名。 | |
| 返回随机的 CVV 码。 | |
| 返回随机的以太坊地址。 | |
| 返回随机的 PayPal 账户信息。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机支付相关数据
print("比特币地址:", generic.payment.bitcoin_address())
print("CID:", generic.payment.cid())
print("信用卡过期日期:", generic.payment.credit_card_expiration_date())
print("信用卡网络:", generic.payment.credit_card_network())
print("信用卡号码:", generic.payment.credit_card_number())
print("信用卡持卡人:", generic.payment.credit_card_owner())
print("CVV:", generic.payment.cvv())
print("以太坊地址:", generic.payment.ethereum_address())
print("PayPal 账户:", generic.payment.paypal())
# 比特币地址: 3vZVg276VaTc76WbIB5n2JHOGb0Gj0mGHg
# CID: 1741
# 信用卡过期日期: 05/16
# 信用卡网络: American Express
# 信用卡号码: 5204 5998 7730 6617
# 信用卡持卡人: {'credit_card': '4304 3908 1433 1617', 'expiration_date': '09/18', 'owner': 'JINNY RANDOLPH'}
# CVV: 005
# 以太坊地址: 0x9155ece518a12da0904b9309b7a44f8e7f3275d5
# PayPal 账户: regarded1838@example.com交通
| 描述 | |
|---|---|
| 返回随机的飞机名称。 | |
| 返回随机的汽车名称。 | |
| 返回随机的制造商名称。 | |
| 返回随机的车辆注册代码。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机交通工具相关数据
print("飞机名称:", generic.transport.airplane())
print("汽车名称:", generic.transport.car())
print("制造商:", generic.transport.manufacturer())
print("车辆注册代码:", generic.transport.vehicle_registration_code())
# 飞机名称: Piper PA-31 Navajo
# 汽车名称: Daewoo Racer
# 制造商: Rolls-Royce
# 车辆注册代码: BDS科学
| 描述 | |
|---|---|
| 返回随机的 DNA 序列。 | |
| 返回随机的测量单位。 | |
| 返回随机的度量前缀。 | |
| 返回随机的 RNA 序列。 |
示例:
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成随机科学相关数据
print("DNA 序列:", generic.science.dna_sequence())
print("测量单位:", generic.science.measure_unit())
print("度量前缀:", generic.science.metric_prefix())
print("RNA 序列:", generic.science.rna_sequence())
# DNA 序列: CATTTCACTG
# 测量单位: newton
# 度量前缀: giga
# RNA 序列: ACUGCAACAC大数据生成
Mimesis 以生成大数据性能高、速度快为名,实际测试下来,确实够快,尤其配合多线程或者多进程情况下,百万数据达到1分钟以内
示例:
- 多线程实现
import time
import threading
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成用户数据的函数
def generate_user_data(num_users):
users = []
for _ in range(num_users):
user = {
"full_name": generic.person.full_name(),
"email": generic.person.email(),
"address": {
"street": generic.address.address(),
"city": generic.address.city(),
"state": generic.address.state(),
"postal_code": generic.address.postal_code(),
"country": generic.address.country()
},
"gender": generic.person.gender()
}
users.append(user)
return users
def main():
total_users = 1000000 # 总用户数
num_threads = 8 # 线程数量
records_per_thread = total_users // num_threads # 计算每个线程需要生成的数量
# 开始计时
start_time = time.time()
threads = []
# 启动线程
for _ in range(num_threads):
thread = threading.Thread(target=generate_user_data, args=(records_per_thread, ))
threads.append(thread)
thread.start()
# 等待所有线程完成
for thread in threads:
thread.join()
# 结束计时
end_time = time.time()
elapsed_time = end_time - start_time
print(f"生成一百万条数据耗时:{elapsed_time}秒")
if __name__ == "__main__":
main()
# 生成一百万条数据耗时:35.266605377197266秒- 多进程实现
import time
from multiprocessing import Process
from multiprocessing import Pool
from mimesis import Generic
from mimesis.locales import Locale
# 创建 Generic 实例
generic = Generic(Locale.ZH)
# 生成用户数据的函数
def generate_user_data(num_users):
users = []
for _ in range(num_users):
user = {
"full_name": generic.person.full_name(),
"email": generic.person.email(),
"address": {
"street": generic.address.address(),
"city": generic.address.city(),
"state": generic.address.state(),
"postal_code": generic.address.postal_code(),
"country": generic.address.country()
},
"gender": generic.person.gender()
}
users.append(user)
return users
def main():
total_users = 1000000 # 总用户数
num_processes = 4 # 进程数量
records_per_process = total_users // num_processes # 计算每个进程需要生成的数量
# 开始计时
start_time = time.time()
# 创建进程池
pool = Pool(num_processes)
# 启动进程
results = []
for _ in range(num_processes):
result = pool.apply_async(generate_user_data, args=(records_per_process,))
results.append(result)
# 等待所有进程完成
pool.close()
pool.join()
# 合并数据
data = []
for result in results:
data.extend(result.get())
# 结束计时
end_time = time.time()
elapsed_time = end_time - start_time
print(f"生成一百万条数据耗时:{elapsed_time}秒")
if __name__ == "__main__":
main()
# 生成一百万条数据耗时:11.349707841873169秒
评论与讨论
如果这篇文章对你有帮助,或你对实现细节有不同判断,可以直接在这里继续讨论。