mimesis详解

194 阅读18分钟

什么是 Python Mimesis?

Python Mimesis 是一个用于生成各种类型假数据的 Python 库。它提供了丰富多样的数据生成器,包括姓名、地址、日期、时间、文本、图像等,能够满足各种不同类型数据的需求。Mimesis 提供了简单而强大的 API,使得用户可以轻松地生成任意数量的假数据,并可以根据需要进行定制和配置。

安装 Mimesis

要开始使用 Mimesis,首先需要安装它。

可以通过命令来安装 Mimesis:

# pip
pip install mimesis

# pdm
pdm add mimesis

支持语言

CountryCodeAssociated attributeNameNative Name
🇦🇪ar-aeLocale.AR_AEArabic U.A.Eالعربية
🇩🇿ar-dzLocale.AR_DZArabic Algeriaالعربية
🇪🇬ar-egLocale.AR_EGArabic Egyptالعربية
🇯🇴ar-joLocale.AR_JOArabic Jordanالعربية
🇰🇼ar-kwLocale.AR_KWArabic Kuwaitالعربية
🇲🇦ar-maLocale.AR_MAArabic Moroccoالعربية
🇴🇲ar-omLocale.AR_OMArabic Omanالعربية
🇶🇦ar-qaLocale.AR_QAArabic Qatarالعربية
🇸🇦ar-saLocale.AR_SAArabic Saudi Arabiaالعربية
🇸🇾ar-syLocale.AR_SYArabic Syriaالعربية
🇹🇳ar-tnLocale.AR_TNArabic Tunisiaالعربية
🇾🇪ar-yeLocale.AR_YEArabic Yemenالعربية
🇨🇿csLocale.CSCzechČesky
🇩🇰daLocale.DADanishDansk
🇩🇪deLocale.DEGermanDeutsch
🇦🇹de-atLocale.DE_ATAustrian GermanDeutsch
🇨🇭de-chLocale.DE_CHSwiss GermanDeutsch
🇬🇷elLocale.ELGreekΕλληνικά
🇺🇸enLocale.ENEnglishEnglish
🇦🇺en-auLocale.EN_AUAustralian EnglishEnglish
🇨🇦en-caLocALE.EN_CACanadian EnglishEnglish
🇬🇧en-gbLocale.EN_GBBritish EnglishEnglish
🇪🇸esLocale.ESSpanishEspañol
🇲🇽es-mxLocale.ES_MXMexican SpanishEspañol
🇪🇪etLocale.ETEstonianEesti
🇮🇷faLocale.FAFarsiفارسی
🇫🇮fiLocale.FIFinnishSuomi
🇫🇷frLocale.FRFrenchFrançais
🇭🇷hrLocale.HRCroatianHrvatski
🇭🇺huLocale.HUHungarianMagyar
🇮🇸isLocale.ISIcelandicÍslenska
🇮🇹itLocale.ITItalianItaliano
🇯🇵jaLocale.JAJapanese日本語
🇰🇿kkLocale.KKKazakhҚазақша
🇰🇷koLocale.KOKorean한국어
🇳🇱nlLocale.NLDutchNederlands
🇧🇪nl-beLocale.NL_BEBelgium DutchNederlands
🇳🇴noLocale.NONorwegianNorsk
🇵🇱plLocale.PLPolishPolski
🇵🇹ptLocale.PTPortuguesePortuguês
🇧🇷pt-brLocale.PT_BRBrazilian PortuguesePortuguês Brasileiro
🇷🇺ruLocale.RURussianРусский
🇸🇰skLocale.SKSlovakSlovensky
🇸🇪svLocale.SVSwedishSvenska
🇹🇷trLocale.TRTurkishTürkçe
🇺🇦ukLocale.UKUkrainianУкраїнська
🇨🇳zhLocale.ZHChinese汉语

枚举(enums)

用途方法名枚举值中文示意
提供 IPv4 地址范围IPv4PurposeTHIS_NETWORK, AMT, LOOBACK, AS112_V4, LINK_LOCAL, TEST_NET_1, TEST_NET_2, TEST_NET_3, BENCHMARKING, PRIVATE_USE_1, PRIVATE_USE_2, PRIVATE_USE_3, RESERVED, SHARE_ADDRESS_SPACE, LIMITED_BROADCAST, IPV4_DUMMY_ADDRESS, TURN_RELAY_ANYCAST, IETF_PROTOCOL_ASSIGNMENTS, PORT_CONTROL_PROTOCOL_ANYCAST, IPV4_SERVICE_CONTINUITY_PREFIX, DIRECT_DELEGATION_AS112_SERVICE当前网络, AMT 网络, 回环地址, AS112 V4, 链路本地地址, 测试网络1, 测试网络2, 测试网络3, 基准测试, 私有使用1, 私有使用2, 私有使用3, 保留地址, 共享地址空间, 有限广播地址, IPv4虚拟地址, 转发中继任播地址, IETF协议分配, 端口控制协议任播地址, IPv4服务连续性前缀, 直接委托AS112服务地址
表示持续时间单位DurationUnitWEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS, MICROSECONDS周, 天, 小时, 分钟, 秒, 毫秒, 微秒
提供支持的区域设置LocaleAR_AE, AR_DZ, AR_EG, AR_JO, AR_OM, AR_SY, AR_YE, CS, DA, DE, DE_AT, DE_CH, EL, EN, EN_AU, EN_CA, EN_GB, ES, ES_MX, ET, FA, FI, FR, HU, HR, IS, IT, JA, KK, KO, NL, NL_BE, NO, PL, PT, PT_BR, RU, SK, SV, TR, UK, ZH, DEFAULT阿拉伯语(阿联酋), 阿拉伯语(阿尔及利亚), 阿拉伯语(埃及), 阿拉伯语(约旦), 阿拉伯语(阿曼), 阿拉伯语(叙利亚), 阿拉伯语(也门), 捷克语, 丹麦语, 德语, 德语(奥地利), 德语(瑞士), 希腊语, 英语, 英语(澳大利亚), 英语(加拿大), 英语(英国), 西班牙语, 西班牙语(墨西哥), 爱沙尼亚语, 波斯语, 芬兰语, 法语, 匈牙利语, 克罗地亚语, 冰岛语, 意大利语, 日语, 哈萨克语, 韩语, 荷兰语, 荷兰语(比利时), 挪威语, 波兰语, 葡萄牙语, 葡萄牙语(巴西), 俄语, 斯洛伐克语, 瑞典语, 土耳其语, 乌克兰语, 中文, 默认语言
表示端口范围PortRangeALL, WELL_KNOWN, EPHEMERAL, REGISTERED所有端口, 知名端口, 临时端口, 已注册端口
表示性别GenderMALE, FEMALE男性, 女性
表示标题类型TitleTypeTYPICAL, ACADEMIC典型头衔, 学术头衔
提供信用卡类型CardTypeVISA, MASTER_CARD, AMERICAN_EXPRESS维萨卡, 万事达卡, 美国运通卡
表示哈希算法AlgorithmMD5, SHA1, SHA224, SHA256, SHA384, SHA512, BLAKE2B, BLAKE2SMD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, BLAKE2b, BLAKE2s
提供顶级域名类型TLDTypeCCTLD, GTLD, GEOTLD, UTLD, STLD国家代码顶级域, 通用顶级域, 地理顶级域, 未分类顶级域, 子顶级域
表示文件类型FileTypeSOURCE, TEXT, DATA, AUDIO, VIDEO, IMAGE, EXECUTABLE, COMPRESSED源代码文件, 文本文件, 数据文件, 音频文件, 视频文件, 图像文件, 可执行文件, 压缩文件
表示常见的 MIME 类型MimeTypeAPPLICATION, AUDIO, IMAGE, MESSAGE, TEXT, VIDEO应用程序数据, 音频流, 图像数据, 消息内容, 文本内容, 视频流
表示公制前缀符号MetricPrefixSignPOSITIVE, NEGATIVE正号, 负号
表示国家代码类型CountryCodeA2, A3, NUMERIC, IOC, FIFA两位字母代码, 三位字母代码, 数字代码, 国际奥委会代码, 国际足联代码
表示 ISBN 格式ISBNFormatISBN13, ISBN10ISBN-13 格式, ISBN-10 格式
表示 EAN 格式EANFormatEAN8, EAN13EAN-8 条码格式, EAN-13 条码格式
提供度量单位名称MeasureUnitMASS, INFORMATION, THERMODYNAMIC_TEMPERATURE, AMOUNT_OF_SUBSTANCE, ANGLE, SOLID_ANGLE, FREQUENCY, FORCE, PRESSURE, ENERGY, POWER, FLUX, ELECTRIC_CHARGE, VOLTAGE, ELECTRIC_CAPACITANCE, ELECTRIC_RESISTANCE, ELECTRICAL_CONDUCTANCE, MAGNETIC_FLUX, MAGNETIC_FLUX_DENSITY, INDUCTANCE, TEMPERATURE, RADIOACTIVITY质量单位, 信息单位, 热力学温度单位, 物质的量单位, 角度单位, 立体角单位, 频率单位, 力的单位, 压强单位, 能量单位, 功率单位, 通量单位, 电荷单位, 电压单位, 电容单位, 电阻单位, 电导单位, 磁通量单位, 磁感应强度单位, 电感单位, 温度单位, 放射性单位
表示数字类型NumTypeFLOAT, INTEGER, COMPLEX, DECIMAL浮点数, 整数, 复数, 十进制数
表示视频文件类型VideoFileMP4, MOVMP4 视频文件, MOV 视频文件
表示音频文件类型AudioFileMP3, AACMP3 音频文件, AAC 音频文件
表示图像文件类型ImageFileJPG, PNG, GIFJPG 图像文件, PNG 图像文件, GIF 图像文件
表示文档文件类型DocumentFilePDF, DOCX, PPTX, XLSXPDF 文档文件, Word 文档文件, PowerPoint 演示文稿文件, Excel 电子表格文件
表示压缩文件类型CompressedFileZIP, GZIPZIP 压缩文件, GZIP 压缩文件
表示 URL 方案URLSchemeWS, WSS, FTP, SFTP, HTTP, HTTPSWebSocket, WebSocket Secure, 文件传输协议, 安全文件传输协议, 超文本传输协议, 安全超文本传输协议
表示时区区域TimezoneRegionAFRICA, AMERICA, ANTARCTICA, ARCTIC, ASIA, ATLANTIC, AUSTRALIA, EUROPE, INDIAN, PACIFIC非洲时区, 美洲时区, 南极洲时区, 北极地区时区, 亚洲时区, 大西洋时区, 澳大利亚时区, 欧洲时区, 印度洋时区, 太平洋时区
表示 DSN(Data Source Name)类型DSNTypePOSTGRES, MYSQL, MONGODB, REDIS, COUCHBASE, MEMCACHED, RABBITMQPostgreSQL 数据库, MySQL 数据库, MongoDB 数据库, Redis 缓存, Couchbase 缓存, Memcached 缓存, RabbitMQ 消息队列
表示时间戳格式TimestampFormatPOSIX, ISO_8601, RFC_3339POSIX 时间戳, ISO 8601 标准时间戳, RFC 3339 标准时间戳
表示表情符号类别EmojyCategoryDEFAULT, SMILEYS_AND_EMOTION, PEOPLE_AND_BODY, ANIMALS_AND_NATURE, FOOD_AND_DRINK, TRAVEL_AND_PLACES, ACTIVITIES, OBJECTS, SYMBOLS, FLAGS默认类别, 微笑和情绪, 人物与身体, 动物与自然, 食物与饮料, 旅行与地点, 活动, 物品, 符号, 旗帜

生成数据类型

序号提供类注释
1Address地址数据 (街道地址, 城市, 国家等)
2Base随机
3BinaryFile二进制文件数据 (图片文件等)
4Finance金融数据 (银行名称, 公司类型等)
5[Choice](#随机选择 (Choice))随机选择器 (从列表中随机选值)
6Code编码数据 (PIN 码, ISBN 等)
7Datetime日期时间数据 (随机日期, 随机时间等)
8Development开发相关数据 (项目名, 软件许可证等)
9File文件相关数据 (文件名, 扩展名等)
10Food食物相关数据 (水果, 饮料等)
11Hardware硬件相关数据 (屏幕分辨率, 硬盘类型等)
12Internet网络相关数据 (IPv4 地址, URL 等)
13Numeric数字相关数据 (整数, 浮点数等)
14Path路径相关数据 (根目录, 用户目录等)
15Payment支付相关数据 (信用卡号, PayPal 账户等)
16Person人物相关数据 (姓名, 电话号码等)
17Science)科学相关数据 (DNA 序列, 单位等)
18Text文本相关数据 (单词, 句子, Emoji 表情等)
19Transport交通相关数据 (汽车型号, 飞机型号等)
20Cryptographic加密相关数据 (UUID, 密码哈希等)

地址(Address)

"""
此脚本演示如何使用 mimesis 库中的 Address 类
生成各种地址相关数据,并以 JSON 格式输出结果。
"""
import json
from mimesis import Locale
from mimesis import Address
from mimesis.enums import CountryCode


def main():
    """
    主函数,用于生成地址相关数据并以 JSON 格式打印输出。
    """
    # 实例化 Address 类,用于生成地址相关的模拟数据
    address = Address(locale=Locale.ZH)

    # 调用 Address 类的各个方法,将生成的数据存储在字典中,键为中文名称
    data = {
        "街道号": address.street_number(),
        "街道名称": address.street_name(),
        "街道后缀": address.street_suffix(),
        "地址": address.address(),
        "州": address.state(),
        "地区": address.region(),
        "省份": address.province(),
        "联邦主体": address.federal_subject(),
        "行政区": address.prefecture(),
        "邮政编码": address.postal_code(),
        "邮政区号": address.zip_code(),
        "国家代码": address.country_code(code=CountryCode.A2),
        "国家代码(备用1)": address.country_code(code=CountryCode.A3),
        "国家代码(备用2)": address.country_code(code=CountryCode.NUMERIC),
        "国家代码(备用3)": address.country_code(code=CountryCode.IOC),
        "国家代码(备用4)": address.country_code(code=CountryCode.FIFA),
        "国家 emoji 旗帜": address.country_emoji_flag(),
        "默认国家": address.default_country(),
        "国家": address.country(),
        "城市": address.city(),
        "纬度": address.latitude(),
        "经度": address.longitude(),
        "坐标": address.coordinates(),
        "大洲": address.continent(),
        "国际电话区号": address.calling_code(),
        "国际电话区号(备用)": address.isd_code(),
        "机场 IATA 代码": address.iata_code(),
        "机场 ICAO 代码": address.icao_code()
    }

    # 将结果转换为 JSON 格式,indent=4 表示使用 4 个空格进行缩进,ensure_ascii=False 确保汉字正常显示
    json_data = json.dumps(data, indent=4, ensure_ascii=False)
    # 打印 JSON 格式的数据
    print(json_data)


if __name__ == "__main__":
    # 当脚本作为主程序运行时,调用 main 函数
    main()

输出

{
    "街道号": "84",
    "街道名称": "黄鹤楼",
    "街道后缀": "条",
    "地址": "西马街1068号",
    "州": "湖北省",
    "地区": "上海市",
    "省份": "辽宁省",
    "联邦主体": "云南省",
    "行政区": "湖南省",
    "邮政编码": "137120",
    "邮政区号": "421593",
    "国家代码": "TR",
    "国家代码(备用1)": "PLW",
    "国家代码(备用2)": "254",
    "国家代码(备用3)": "IRI",
    "国家代码(备用4)": "MOZ",
    "国家 emoji 旗帜": "🇩🇪",
    "默认国家": "中華民國",
    "国家": "哥伦比亚",
    "城市": "衢州市",
    "纬度": -65.040489,
    "经度": 115.948233,
    "坐标": {
        "longitude": -94.150593,
        "latitude": -84.107498
    },
    "大洲": "欧洲",
    "国际电话区号": "+248",
    "国际电话区号(备用)": "+973",
    "机场 IATA 代码": "LAD",
    "机场 ICAO 代码": "EDAH"
}

随机(Base)


import json
from pathlib import Path 
from mimesis import BaseProvider,BaseDataProvider
from mimesis.enums import CountryCode


def main():
    """
    主函数,用于生成地址相关数据并以 JSON 格式打印输出。
    """
    # 实例化 Address 类,用于生成地址相关的模拟数据
    baseprovider = BaseProvider()
    basedataprovider= BaseDataProvider()

    # 准备要更新的数据
    data = {
        "重新设置随机种子": baseprovider.reseed(seed=123),
        "验证枚举": baseprovider.validate_enum(item=None, enum=CountryCode),
        "读取全局文件": json.load(open(Path(__file__).parent / "countries.json")),
        "检查种子": baseprovider._has_seed(),
        "字符串表示": str(baseprovider),
        "当前地区": basedataprovider._extract(["country", "name"]),
        "更新数据集": basedataprovider._update_dict({"country": "中国", "name": "北京"}, {"name": "上海"}),
        "加载数据集": basedataprovider._load_dataset(),
        "提取数据集": basedataprovider.update_dataset({"country": "中国", "name": "北京"}),
        "获取当前区域": basedataprovider.get_current_locale(),
        "覆盖区域设置": basedataprovider._override_locale(),
        "临时覆盖区域": None,  # 上下文管理器无法直接存储在字典中
        "字符串表示": str(basedataprovider)
    }

    # 单独使用override_locale上下文管理器
    with basedataprovider.override_locale('zh') as provider:
        temp_data = {
            "临时覆盖区域示例": str(provider)
        }
        print(json.dumps(temp_data, indent=4, ensure_ascii=False))
    # 将结果转换为 JSON 格式,indent=4 表示使用 4 个空格进行缩进,ensure_ascii=False 确保汉字正常显示
    json_data = json.dumps(data, indent=4, ensure_ascii=False)
    # 打印 JSON 格式的数据
    print(json_data)


if __name__ == "__main__":
    # 当脚本作为主程序运行时,调用 main 函数
    main()

输出

{
    "临时覆盖区域示例": "BaseDataProvider <Locale.ZH>"
}
{
    "重新设置随机种子": null,
    "验证枚举": "a2",
    "读取全局文件": {
        "countries": [
            {
                "code": "CN",
                "name": "中国",
                "capital": "北京",
                "region": "亚洲",
                "population": 1400000000
            },
            {
                "code": "US",
                "name": "美国",
                "capital": "华盛顿",
                "region": "北美洲",
                "population": 331000000
            },
            {
                "code": "JP",
                "name": "日本",
                "capital": "东京",
                "region": "亚洲",
                "population": 126000000
            },
            {
                "code": "DE",
                "name": "德国",
                "capital": "柏林",
                "region": "欧洲",
                "population": 83000000
            },
            {
                "code": "BR",
                "name": "巴西",
                "capital": "巴西利亚",
                "region": "南美洲",
                "population": 213000000
            }
        ]
    },
    "检查种子": true,
    "字符串表示": "BaseDataProvider <Locale.EN>",
    "当前地区": null,
    "更新数据集": {
        "country": "中国",
        "name": "上海"
    },
    "加载数据集": null,
    "提取数据集": null,
    "获取当前区域": "en",
    "覆盖区域设置": null,
    "临时覆盖区域": null
}

文件(binaryfile)

from mimesis import BinaryFile


def main():
    binary_file = BinaryFile()
    
    # 接收音频文件数据并写入
    audio_data = binary_file.audio()
    with open('sample.mp3', 'wb') as f:
        f.write(audio_data)
    
    # 接收图片文件数据并写入
    image_data = binary_file.image()
    with open('sample.png', 'wb') as f:
        f.write(image_data)
    
    # 接收视频文件数据并写入
    video_data = binary_file.video()
    with open('sample.mp4', 'wb') as f:
        f.write(video_data)
    
    # 接收文档文件数据并写入
    document_data = binary_file.document()
    with open('sample.pdf', 'wb') as f:
        f.write(document_data)
    
    # 接收压缩文件数据并写入
    compressed_data = binary_file.compressed()
    with open('sample.zip', 'wb') as f:
        f.write(compressed_data)

if __name__ == '__main__':
    main()

输出

会将数据输出到当前文件夹内

随机选择 (Choice)

from mimesis import Choice


def main():
    choice = Choice()

    # 从列表中随机选择一个元素
    random_item = choice(items=['apple', 'banana', 'cherry'])
    print(random_item)
    
    #从字符串中随机选择一个字符
    random_char = choice(items='hello')
    print(random_char)

    #生成一个指定长度的随机序列
    random_sequence = choice(items=[1, 2, 3, 4, 5], length=3)
    print(random_sequence)

    #生成一个包含唯一元素的随机序列
    unique_sequence = choice(items=[1, 2, 3, 4, 5], length=3, unique=True)
    print(unique_sequence)

if __name__ == '__main__':
    main()

输出

apple
e
[5, 5, 1]
[5, 1, 2]

商品码(code)

from mimesis import Code
from mimesis.enums import ISBNFormat, EANFormat
from mimesis.locales import Locale

# 初始化 Code 类
code_provider = Code()

# 生成随机的区域代码 (MS-LCID)
locale_code = code_provider.locale_code()
print(f"Locale Code: {locale_code}")

# 生成 ISSN (国际标准期刊号)
issn = code_provider.issn(mask="####-####")
print(f"ISSN: {issn}")

# 生成 ISBN (国际标准图书编号) 根据指定的格式和语言环境
isbn = code_provider.isbn(fmt=ISBNFormat.ISBN13, locale=Locale.EN)
print(f"ISBN: {isbn}")

# 生成 EAN (欧洲商品条码) 根据指定的格式
ean = code_provider.ean(fmt=EANFormat.EAN13)
print(f"EAN: {ean}")

# 生成 IMEI (国际移动设备识别码)
imei = code_provider.imei()
print(f"IMEI: {imei}")

# 生成 PIN (个人识别号码)
pin = code_provider.pin(mask="####")
print(f"PIN: {pin}")

输出

Locale Code: en-za
ISSN: 6583-0070
ISBN: 077-1-57043-544-2
EAN: 2517462504805
IMEI: 358387066690974
PIN: 5599

加密(Cryptographic)

from mimesis import Cryptographic
from mimesis.enums import Algorithm

# 初始化 Cryptographic 类
crypto = Cryptographic()

# 生成 UUID 对象和字符串
uuid_obj = crypto.uuid_object()
print(f"UUID Object: {uuid_obj}")

uuid_str = crypto.uuid()
print(f"UUID String: {uuid_str}")

# 生成哈希值 (支持算法: md5, sha1, sha256 等)
hash_value = crypto.hash(algorithm=Algorithm.SHA256)
print(f"Hash Value (SHA-256): {hash_value}")

# 生成随机字节
token_bytes = crypto.token_bytes(entropy=16)
print(f"Token Bytes: {token_bytes}")

# 生成十六进制 Token
token_hex = crypto.token_hex(entropy=16)
print(f"Token Hex: {token_hex}")

# 生成 URL 安全的 Token
token_urlsafe = crypto.token_urlsafe(entropy=16)
print(f"Token URL Safe: {token_urlsafe}")

# 生成助记词短语
mnemonic_phrase = crypto.mnemonic_phrase()
print(f"Mnemonic Phrase: {mnemonic_phrase}")

输出

UUID Object: 19d013f6-ea5d-473e-93d0-02d055a8ee52
UUID String: 35fc9b4d-145e-43af-bd94-69796b8ce488
Hash Value (SHA-256): 599490969486234dac231708dc7af20dfebaca72c40e36d1e49e9e039f3b6cc9
Token Bytes: b"H\x8f\xa6'!3`\xc0\xa7W\x19\x9d\xa9\xd4^\x06"
Token Hex: 034126b01f5cc322badf5ae2c1d8c952
Token URL Safe: igjkZ3euvF7S8hLfARK8Ew
Mnemonic Phrase: slam woman used truly thunder shy repair learn pride pencil town nut

时间(Datetime)

from mimesis import Datetime
from mimesis.enums import TimestampFormat,DurationUnit
# 初始化 Datetime 提供者
datetime_provider = Datetime()

# 1. 生成一个随机日期对象
random_date = datetime_provider.date(start=2020, end=2023)
print("Random Date:", random_date)

# 2. 生成一个格式化的日期字符串
formatted_date = datetime_provider.formatted_date(fmt="%Y-%m-%d")
print("Formatted Date:", formatted_date)

# 3. 生成一个随机时间对象
random_time = datetime_provider.time()
print("Random Time:", random_time)

# 4. 生成一个格式化的时间字符串
formatted_time = datetime_provider.formatted_time(fmt="%H:%M:%S")
print("Formatted Time:", formatted_time)

# 5. 生成一个随机年份
random_year = datetime_provider.year(minimum=2000, maximum=2023)
print("Random Year:", random_year)

# 6. 生成一个随机月份名称
random_month = datetime_provider.month(abbr=False)  # 设置 abbr=True 可以获取缩写
print("Random Month:", random_month)

# 7. 生成一个随机星期几
random_day_of_week = datetime_provider.day_of_week(
    abbr=False
)  # 设置 abbr=True 可以获取缩写
print("Random Day of Week:", random_day_of_week)

# 8. 生成一个随机时区
print("Random Timezone:", datetime_provider.timezone())

# 9. 生成一个 GMT 偏移量
print("GMT Offset:", datetime_provider.gmt_offset())

# 10. 生成一个 POSIX 时间戳
print("POSIX Timestamp:", datetime_provider.timestamp(fmt=TimestampFormat.POSIX))

# 11. 生成一个 ISO 8601 格式的时间戳
print("ISO 8601 Timestamp:",  datetime_provider.timestamp(fmt=TimestampFormat.ISO_8601))

# 12. 生成一个持续时间(timedelta)
duration = datetime_provider.duration(
    min_duration=1, max_duration=10, duration_unit=DurationUnit.MINUTES
)
print("Duration:", duration)

输出

Random Date: 2021-05-06
Formatted Date: 2011-08-01
Random Time: 04:22:09.214001
Formatted Time: 02:50:29
Random Year: 2017
Random Month: February
Random Day of Week: Wednesday
Random Timezone: Atlantic/Reykjavik
GMT Offset: UTC -02:00
POSIX Timestamp: 1748365152
ISO 8601 Timestamp: 2025-10-27T23:50:58.716021
Duration: 0:04:00

软件开发(Development)

from mimesis import Development

# 创建 Development 类的实例
dev = Development()

# 调用所有方法并输出生成的虚假数据
print("软件许可证:", dev.software_license())              # 生成一个随机的软件许可证名称
print("日历版本号:", dev.calver())                        # 生成一个基于日历的版本号
print("语义化版本号:", dev.version())                     # 生成一个符合语义化版本规范的版本号
print("开发阶段:", dev.stage())                           # 获取一个随机的开发阶段(如 Alpha、Beta)
print("编程语言:", dev.programming_language())            # 随机选择一种编程语言
print("操作系统:", dev.os())                              # 随机选择一个操作系统或发行版名称
print("布尔值:", dev.boolean())                           # 生成一个随机的布尔值 (True 或 False)
print("系统质量属性:", dev.system_quality_attribute())    # 生成一个系统质量属性
print("ility 别名:", dev.ility())  

输出

软件许可证: The BSD 2-Clause License
日历版本号: 2022.12.9
语义化版本号: 9.87.83
开发阶段: RC
编程语言: Haskell
操作系统: Mint
布尔值: True
系统质量属性: usability
ility 别名: manageability

文件名(File)

from mimesis import File

# 指定文件类型(例如文本文件)
from mimesis.enums import FileType, MimeType

file_provider = File()

# 生成任意文件类型的扩展名
ext = file_provider.extension()
print("扩展名:", ext) 

ext_txt = file_provider.extension(file_type=FileType.TEXT)
print("文本文件扩展名:", ext_txt) 

# 生成任意 MIME 类型
mime = file_provider.mime_type()
print("MIME类型:", mime)  

mime_text = file_provider.mime_type(type_=MimeType.TEXT)
print("文本MIME类型:", mime_text)  

# 生成随机文件大小,默认范围是 1 到 100
size_random = file_provider.size()
print("文件大小:", size_random)  

# 自定义范围
custom_size = file_provider.size(minimum=10, maximum=50)
print("自定义文件大小:", custom_size) 

# 生成带有随机扩展名的文件名
filename = file_provider.file_name()
print("文件名:", filename)  

# 指定文件类型(例如图片)
image_filename = file_provider.file_name(file_type=FileType.IMAGE)
print("图片文件名:", image_filename)

输出

扩展名: .flac
文本文件扩展名: .log
MIME类型: image/vnd.sealed.png
文本MIME类型: text/html
文件大小: 85 MB
自定义文件大小: 42 GB
文件名: count.csv
图片文件名: by.svg

公司(Finance)

# 导入 Finance 类
from mimesis import Finance

# 创建 Finance 实例
finance = Finance()

# 生成随机公司名称
print("公司名称:", finance.company())

# 生成公司类型(全称)
print("公司类型 (全称):", finance.company_type(abbr=False))

# 生成公司类型(缩写)
print("公司类型 (缩写):", finance.company_type(abbr=True))

# 获取当前区域设置下的货币 ISO 编码
print("货币 ISO 编码:", finance.currency_iso_code())

# 获取随机货币 ISO 编码
print("随机货币 ISO 编码:", finance.currency_iso_code(allow_random=True))

# 获取当前区域设置下的货币符号
print("货币符号:", finance.currency_symbol())

# 生成随机加密货币 ISO 编码
print("加密货币 ISO 编码:", finance.cryptocurrency_iso_code())

# 获取加密货币符号
print("加密货币符号:", finance.cryptocurrency_symbol())

# 生成银行名称
print("银行名称:", finance.bank())

# 生成指定范围内的价格
print("价格 (500-1500):", finance.price(minimum=500, maximum=1500))

# 生成以 BTC 表示的价格
print("BTC 价格 (0-2):", finance.price_in_btc(minimum=0, maximum=2))

# 生成股票代码
print("股票代码:", finance.stock_ticker())

# 生成股票名称
print("股票名称:", finance.stock_name())

# 生成股票交易所名称
print("股票交易所:", finance.stock_exchange())

输出

公司名称: PACCAR
公司类型 (全称): Limited Liability Limited Partnership
公司类型 (缩写): P.C
货币 ISO 编码: USD
随机货币 ISO 编码: LAK
货币符号: $
加密货币 ISO 编码: IOT
加密货币符号: ₿
银行名称: Horizon Bancorp
价格 (500-1500): 968.69
BTC 价格 (0-2): 0.9954332
股票代码: MSBI
股票名称: HomeStreet
股票交易所: JPX

食物(Food)

from mimesis import Food

# 创建一个 Food 实例
food_provider = Food()

# 生成随机的蔬菜名称
vegetable = food_provider.vegetable()
print(f"随机蔬菜名称: {vegetable}")

# 生成随机的水果或浆果名称
fruit = food_provider.fruit()
print(f"随机水果名称: {fruit}")

# 生成随机的菜肴名称
dish = food_provider.dish()
print(f"随机菜肴名称: {dish}")

# 生成随机的香料或草药名称
spice = food_provider.spices()
print(f"随机香料名称: {spice}")

# 生成随机的饮料名称
drink = food_provider.drink()
print(f"随机饮料名称: {drink}")

输出

随机蔬菜名称: Parsley Root
随机水果名称: Dabai
随机菜肴名称: Fry sauce
随机香料名称: Bay leaf
随机饮料名称: Pink Gin

硬件(Hardware)

from mimesis import Hardware

hardware_provider = Hardware()

print(f"随机屏幕分辨率: {hardware_provider.resolution()}")
print(f"随机屏幕尺寸: {hardware_provider.screen_size()}")
print(f"随机CPU名称: {hardware_provider.cpu()}")
print(f"随机CPU频率: {hardware_provider.cpu_frequency()}")
print(f"随机CPU代数: {hardware_provider.generation()}")
print(f"随机CPU代号: {hardware_provider.cpu_codename()}")
print(f"随机RAM类型: {hardware_provider.ram_type()}")
print(f"随机RAM大小: {hardware_provider.ram_size()}")
print(f"随机硬盘类型: {hardware_provider.ssd_or_hdd()}")
print(f"随机显卡名称: {hardware_provider.graphics()}")
print(f"随机硬件制造商: {hardware_provider.manufacturer()}")
print(f"随机手机型号: {hardware_provider.phone_model()}")

输出

随机屏幕分辨率: 1280x720
随机屏幕尺寸: 13.3″
随机CPU名称: AMD Ryzen 7 1700
随机CPU频率: 3.6GHz
随机CPU代数: 8th Generation
随机CPU代号: Broadwell
随机RAM类型: DDR3
随机RAM大小: 16GB
随机硬盘类型: Micron 4TB HDD
随机显卡名称: Intel® HD Graphics 4000
随机硬件制造商: Lenovo
随机手机型号: iPhone 14 Pro

互联网(Internet)

from mimesis import Internet

# 创建 Internet 实例
internet = Internet()

# 调用所有方法并输出结果
print("随机内容类型:", internet.content_type())
print("随机 DSN:", internet.dsn())
print("随机 HTTP 状态消息:", internet.http_status_message())
print("随机 HTTP 状态码:", internet.http_status_code())
print("随机 HTTP 方法:", internet.http_method())
print("随机 IPv4 地址对象:", internet.ip_v4_object())
print("随机 IPv4 地址:", internet.ip_v4())
print("随机带端口的 IPv4 地址:", internet.ip_v4_with_port())
print("随机 IPv6 地址对象:", internet.ip_v6_object())
print("随机 IPv6 地址:", internet.ip_v6())
print("随机 ASN 编号:", internet.asn())
print("随机 MAC 地址:", internet.mac_address())
print("随机图片 URL:", internet.stock_image_url())
print("随机主机名:", internet.hostname())
print("随机 URL:", internet.url())
print("随机 URI:", internet.uri())
print("随机查询字符串:", internet.query_string())
print("随机查询参数:", internet.query_parameters())
print("随机顶级域名:", internet.top_level_domain())
print("随机 TLD 域名:", internet.tld())
print("随机用户代理:", internet.user_agent())
print("随机端口号:", internet.port())
print("随机路径:", internet.path())
print("随机 Slug:", internet.slug())
print("随机公共 DNS 服务器:", internet.public_dns())
print("随机 HTTP 响应头信息:", internet.http_response_headers())
print("随机 HTTP 请求头信息:", internet.http_request_headers())
print("特殊用途 IPv4 地址对象:", internet.special_ip_v4_object())
print("特殊用途 IPv4 地址:", internet.special_ip_v4())

输出

随机内容类型: message/global
随机 DSN: postgres://lemon.prof:5432
随机 HTTP 状态消息: 429 Too Many Requests
随机 HTTP 状态码: 101
随机 HTTP 方法: HEAD
随机 IPv4 地址对象: 152.162.219.83
随机 IPv4 地址: 26.165.208.233
随机带端口的 IPv4 地址: 248.17.22.119:36242
随机 IPv6 地址对象: 5b8:3a86:f708:5449:bd45:b359:d40a:793b
随机 IPv6 地址: f3ed:be8:2d7b:2e19:b054:344d:e1e7:28de
随机 ASN 编号: AS455794032
随机 MAC 地址: 00:16:3e:59:e7:7b
随机图片 URL: https://source.unsplash.com/1920x1080?
随机主机名: path.coop
随机 URL: https://story.ki/
随机 URI: https://unemployment.mh/2023/01/16/hardcover-solar-vertical-specified-ns-cambridge-purchases-lakes-alphabetical
随机查询字符串: revenues=diagnostic&density=railway&gamma=plot&caps=versions&corporation=voip&cosmetic=gun&chevrolet=memorabilia&instructions=maintain
随机查询参数: {'districts': 'weird', 'inclusive': 'meeting', 'manual': 'tough', 'authority': 'hollywood'}
随机顶级域名: .sy
随机 TLD 域名: .ws
随机用户代理: Mozilla/5.0 (iPad; CPU OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A8426 Safari/8536.25
随机端口号: 622
随机路径: sigma/advertisers/turn/machinery/fox
随机 Slug: trial-tours
随机公共 DNS 服务器: 76.223.122.150
随机 HTTP 响应头信息: {'Allow': '*', 'Age': 27822, 'Server': 'nginx/1.14.0 (Ubuntu)', 'Content-Type': 'text/plain', 'X-Request-ID': 'ef4190940e61a0c821b267376a7024dd', 'Content-Language': 'ar-kw', 'Content-Location': 'ignore/louis/hispanic/adjusted', 'Set-Cookie': 'csrftoken=BqN7BI/zPQtTaSLV8LPWyzxuAJa1E/n2uyAEhCUx+AI=; christmas=frequency; Max-Age=27822', 'Upgrade-Insecure-Requests': 1, 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': 1, 'Connection': 'keep-alive', 'X-Frame-Options': 'DENY', 'Content-Encoding': 'deflate', 'Cross-Origin-Opener-Policy': 'same-origin-allow-popups', 'Cross-Origin-Resource-Policy': 'same-origin', 'Strict-Transport-Security': 'max-age=27822'}
随机 HTTP 请求头信息: {'Referer': 'https://symposium.asia/2011/01/07/demonstrated-usc-basic-taste-individuals-farmer-accessory', 'Authorization': 'Bearer 396c34692f4f6a4e2b6c33787433627a6a4b6c6a4b4261524b6a573041725752735a656d5943526952647a52504a38365046304a31614b384541745539664c41417a33326362644153366b515752794a3043336178413d3d', 'Cookie': 'csrftoken=7hvmVp/ZSZRMb7TW170KdSEUnLBXmkhe6mi6v/1inHU=; vast=accident', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; LCJB; rv:11.0) like Gecko', 'X-CSRF-Token': '784f7a7442576c45454738396346627650444b5a2b616d5a61743667626266726f7874634b4a7a46586e673d', 'Content-Type': 'image/vnd.mix', 'Content-Length': 9391, 'Connection': 'keep-alive', 'Cache-Control': 'no-cache', 'Accept': 'application/vnd.nokia.catalogs', 'Host': 'restaurant.mobi', 'Accept-Language': '*'}
特殊用途 IPv4 地址对象: 242.180.225.246
特殊用途 IPv4 地址: 198.51.100.147

数值(Numeric)

from mimesis import Numeric,NumType

numeric = Numeric()

# 1. increment - 返回一个递增整数(默认计数器)
print("递增编号 (默认):", numeric.increment())

# 2. increment - 使用自定义计数器名称
print("递增编号 (自定义a):", numeric.increment(accumulator="a"))

# 3. float_number - 生成指定范围与精度的浮点数
print("随机浮点数:", numeric.float_number(start=0.0, end=100.0, precision=2))

# 4. floats - 生成多个浮点数列表
print("多个浮点数:", numeric.floats(start=0.0, end=10.0, n=5, precision=2))

# 5. integer_number - 生成指定范围内的整数
print("随机整数:", numeric.integer_number(start=1, end=100))

# 6. integers - 生成多个整数列表
print("多个整数:", numeric.integers(start=1, end=10, n=5))

# 7. complex_number - 生成一个复数
print("随机复数:", numeric.complex_number(
    start_real=0.0, end_real=10.0,
    start_imag=0.0, end_imag=10.0,
    precision_real=2, precision_imag=2
))

# 8. complexes - 生成多个复数列表
print("多个复数:", numeric.complexes(
    start_real=0.0, end_real=5.0,
    start_imag=0.0, end_imag=5.0,
    precision_real=1, precision_imag=1,
    n=3
))

# 9. decimal_number - 生成一个高精度 Decimal 数值
print("高精度小数:", numeric.decimal_number(start=0.0, end=100.0))

# 10. decimals - 生成多个高精度 Decimal 数值列表
print("多个高精度小数:", numeric.decimals(start=0.0, end=10.0, n=4))

# 11. matrix - 生成一个 m x n 的浮点数矩阵
print("浮点数矩阵 (2x3):")
for row in numeric.matrix(m=2, n=3, num_type=NumType.FLOAT, start=0.0, end=10.0, precision=2):
    print(row)

# 12. matrix - 生成一个 m x n 的整数矩阵
print("整数矩阵 (3x2):")
for row in numeric.matrix(m=3, n=2, num_type=NumType.INTEGER, start=1, end=10):
    print(row)

输出

递增编号 (默认): 1
递增编号 (自定义a): 1
随机浮点数: 32.19
多个浮点数: [7.43, 0.74, 1.29, 4.35, 5.86]
随机整数: 32
多个整数: [6, 9, 8, 4, 8]
随机复数: (1.66+8.65j)
多个复数: [(2.5+3.5j), (0.1+3j), (4.2+0.8j)]
高精度小数: 45.998539540619134413645952008664608001708984375
多个高精度小数: [Decimal('6.9406976464669742910018612747080624103546142578125'), Decimal('6.50728992396565697475807610317133367061614990234375'), Decimal('7.93036128788532668210109477513469755649566650390625'), Decimal('2.946209116456164789354943422949872910976409912109375')]
浮点数矩阵 (2x3):
[0.62, 2.56, 6.58]
[4.07, 3.32, 0.84]
整数矩阵 (3x2):
[1, 7]
[1, 6]
[3, 2]

路径(Path)

from mimesis import Path

# 创建 Path 实例(默认使用当前系统平台)
path_provider = Path()

# 1. root - 返回根目录路径
print("根目录路径:", path_provider.root())

# 2. home - 返回用户的主目录路径
print("主目录路径:", path_provider.home())

# 3. user - 返回随机用户目录路径
print("随机用户目录:", path_provider.user())

# 4. users_folder - 返回用户下的随机文件夹路径
print("用户文件夹路径:", path_provider.users_folder())

# 5. dev_dir - 返回开发目录路径
print("开发目录路径:", path_provider.dev_dir())

# 6. project_dir - 返回项目目录路径
print("项目目录路径:", path_provider.project_dir())

输出

根目录路径: \
主目录路径: \home
随机用户目录: \home\Activists
用户文件夹路径: \home\Wave\Music
开发目录路径: \home\Parks\Dev\GNU Octave
项目目录路径: \home\Millennium\Development\PowerShell\agilisaurus

支付(Payment)

from mimesis import Payment, CardType, Gender

# 创建 Payment 实例(可选 locale、seed 等)
payment = Payment()

# 1. cid() - 生成一个随机 CID 验证码(信用卡背面三位数)
print("CID 验证码:", payment.cid())

# 2. paypal() - 生成一个 PayPal 账户邮箱
print("PayPal 账户:", payment.paypal())

# 3. bitcoin_address() - 生成一个比特币地址(仅模拟,不保证有效)
print("比特币地址:", payment.bitcoin_address())

# 4. ethereum_address() - 生成一个以太坊地址(仅模拟,不保证有效)
print("以太坊地址:", payment.ethereum_address())

# 5. credit_card_network() - 生成一个信用卡发行网络名称
print("信用卡网络:", payment.credit_card_network())

# 6. credit_card_number(card_type: CardType | None = None) - 生成信用卡号
# 参数:
#   card_type: 卡类型(CardType.VISA / MASTER_CARD / AMERICAN_EXPRESS)
print("Visa 信用卡号:", payment.credit_card_number())
print("MasterCard 信用卡号:", payment.credit_card_number(card_type=CardType.MASTER_CARD))
print("American Express 信用卡号:", payment.credit_card_number(card_type=CardType.AMERICAN_EXPRESS))

# 7. credit_card_expiration_date(minimum: int = 16, maximum: int = 25) - 生成有效期
# 参数:
#   minimum: 年份最小值(当前年份 + 偏移)
#   maximum: 年份最大值
print("信用卡有效期 (默认):", payment.credit_card_expiration_date())
print("信用卡有效期 (自定义范围):", payment.credit_card_expiration_date(minimum=2024, maximum=2030))

# 8. cvv() - 生成 CVV 安全验证码(信用卡背面三位数)
print("CVV 安全码:", payment.cvv())

# 9. credit_card_owner(gender: Gender | None = None) - 生成完整的信用卡持有者信息
# 参数:
#   gender: 持卡人性别(Gender.MALE / Gender.FEMALE)
owner_info = payment.credit_card_owner()
print("信用卡持卡人信息:")
print(f"  卡号: {owner_info['credit_card']}")
print(f"  有效期: {owner_info['expiration_date']}")
print(f"  持卡人姓名: {owner_info['owner']}")

owner_info_male = payment.credit_card_owner(gender=Gender.MALE)
print("男性持卡人姓名:", owner_info_male["owner"])

owner_info_female = payment.credit_card_owner(gender=Gender.FEMALE)
print("女性持卡人姓名:", owner_info_female["owner"])

输出

CID 验证码: 4582
PayPal 账户: myanmar2071@gmail.com
比特币地址: 3Qodo23muR3gv5Ylt6QPwAbcvXbGCe6ckg
以太坊地址: 0x6a44630cf22675066a3d75128425bfa984db2914
信用卡网络: Discover
Visa 信用卡号: 3718 898983 26662
MasterCard 信用卡号: 2545 3861 0869 5272
American Express 信用卡号: 3450 896406 20701
信用卡有效期 (默认): 04/17
信用卡有效期 (自定义范围): 01/2028
CVV 安全码: 162
信用卡持卡人信息:
  卡号: 5162 4228 6979 8677
  有效期: 06/22
  持卡人姓名: BRYANT DECKER
男性持卡人姓名: MICAH CALHOUN
女性持卡人姓名: MARLANA GRAY

个人信息(Person)

from mimesis import Person, Gender, TitleType

# 创建 Person 实例
person = Person()

# 1. birthdate - 生成随机出生日期
print("出生日期:", person.birthdate(min_year=1980, max_year=2005))

# 2. name - 生成名字(可指定性别)
print("名字 (默认):", person.name())
print("男性名字:", person.name(gender=Gender.MALE))
print("女性名字:", person.name(gender=Gender.FEMALE))

# 3. first_name - 同 name
print("第一个名字:", person.first_name())

# 4. surname - 生成姓氏(可指定性别)
print("姓氏 (默认):", person.surname())
print("男性姓氏:", person.surname(gender=Gender.MALE))
print("女性姓氏:", person.surname(gender=Gender.FEMALE))

# 5. last_name - 同 surname
print("最后一个姓氏:", person.last_name())

# 6. title - 生成职称或头衔(可指定性别和类型)
print("职称 (默认):", person.title())
print("男性博士头衔:", person.title(gender=Gender.MALE, title_type=TitleType.ACADEMIC))
print("女性职业头衔:", person.title(gender=Gender.FEMALE, title_type=TitleType.ACADEMIC))
# 7. full_name - 生成完整姓名(可反转顺序)
print("完整姓名:", person.full_name())
print("倒序完整姓名:", person.full_name(reverse=True))
print("男性完整姓名:", person.full_name(gender=Gender.MALE))

# 8. username - 生成用户名(支持模板格式)
print("默认用户名:", person.username())
print("自定义模板用户名:", person.username(mask="C_d_C", drange=(1990, 2020)))

# 9. password - 生成密码(可返回 SHA256 哈希)
print("默认密码:", person.password())
print("长度为12的密码:", person.password(length=12))
print("SHA256 密码哈希:", person.password(hashed=True))

# 10. email - 生成随机邮箱(可指定域名)
print("随机邮箱:", person.email())
print("指定域名邮箱:", person.email(domains=["example.com", "test.org"]))

# 11. gender_symbol - 生成性别符号(♂ / ♀)
print("性别符号:", person.gender_symbol())

# 12. gender_code - 生成 ISO 性别代码(0~9)
print("ISO 性别代码:", person.gender_code())

# 13. gender - 生成性别名称(Male / Female)
print("性别:", person.gender())

# 14. sex - 同 gender
print("性征:", person.sex())

# 15. height - 生成身高(米)
print("身高:", person.height(minimum=1.5, maximum=2.0))

# 16. weight - 生成体重(公斤)
print("体重:", person.weight(minimum=40, maximum=100))

# 17. blood_type - 生成血型
print("血型:", person.blood_type())

# 18. occupation - 生成职业
print("职业:", person.occupation())

# 19. political_views - 生成政治观点
print("政治观点:", person.political_views())

# 20. worldview - 生成世界观
print("世界观:", person.worldview())

# 21. views_on - 生成对某事的观点
print("观点:", person.views_on())

# 22. nationality - 生成国籍(可指定性别)
print("国籍:", person.nationality())
print("男性国籍:", person.nationality(gender=Gender.MALE))

# 23. university - 生成大学名称
print("大学:", person.university())

# 24. academic_degree - 生成学历
print("学历:", person.academic_degree())

# 25. language - 生成语言
print("语言:", person.language())

# 26. phone_number - 生成电话号码(支持模板)
print("电话号码:", person.phone_number())
print("自定义模板电话号码:", person.phone_number(mask="+86-(###)-###-####"))

# 27. telephone - 同 phone_number
print("电话:", person.telephone())

# 28. identifier - 生成任意标识符(支持模板)
print("标识符:", person.identifier())
print("自定义标识符:", person.identifier(mask="##-##/##"))

输出

出生日期: 1988-09-30
名字 (默认): Toney
男性名字: Byron
女性名字: Melaine
第一个名字: Abram
姓氏 (默认): Richard
男性姓氏: Meyers
女性姓氏: Patton
最后一个姓氏: Lang
职称 (默认): Master
男性博士头衔: MSc
女性职业头衔: PhD
完整姓名: Jannet Landry
倒序完整姓名: Hardy Lavern
男性完整姓名: Todd Prince
默认用户名: barrier_1880
自定义模板用户名: Sharp_1996_Dip
默认密码: n>(xMQwk
长度为12的密码: qL4Z1r_MOp_z
SHA256 密码哈希: 4c063fa3106f42ea8ba4d2b2482afcb7575f74170e4e6151ac7e6d590e29f7fe
随机邮箱: characters2012@duck.com
指定域名邮箱: made2008@test.org
性别符号: ♂
ISO 性别代码: 1
性别: Male
性征: Other
身高: 1.95
体重: 79
血型: A+
职业: Lighting Designer
政治观点: Libertarian
世界观: Pantheism
观点: Compromisable
国籍: Ukrainian
男性国籍: Chinese
大学: College of Coastal Georgia
学历: PhD
语言: Estonian
电话号码: +1-314-947-4467
自定义模板电话号码: +86-(472)-208-1375
电话: +14303972998
标识符: 31-03/92
自定义标识符: 31-44/65

科学和度量单位(scence)

from mimesis import Science, MeasureUnit, MetricPrefixSign

# 创建 Science 实例
science = Science()

# 1. rna_sequence(length: int = 10) - 生成随机 RNA 序列
print("RNA 序列 (默认长度):", science.rna_sequence())
print("RNA 序列 (自定义长度):", science.rna_sequence(length=15))

# 2. dna_sequence(length: int = 10) - 生成随机 DNA 序列
print("DNA 序列 (默认长度):", science.dna_sequence())
print("DNA 序列 (自定义长度):", science.dna_sequence(length=15))

# 3. measure_unit(name: MeasureUnit | None = None, symbol: bool = False) - 获取 SI 单位
print("随机单位:", science.measure_unit())
print("单位名称:", science.measure_unit(name=MeasureUnit.FORCE))       # 力
print("单位符号:", science.measure_unit(name=MeasureUnit.FORCE, symbol=True))  # N
print("温度单位:", science.measure_unit(name=MeasureUnit.TEMPERATURE, symbol=True))  # °C
# 4. metric_prefix(sign: MetricPrefixSign | None = None, symbol: bool = False) - 获取 SI 前缀
print("随机前缀:", science.metric_prefix())
print("获取正前缀:", science.metric_prefix(sign=MetricPrefixSign.POSITIVE))
print("获取负前缀符号:", science.metric_prefix(sign=MetricPrefixSign.NEGATIVE, symbol=True))

输出

RNA 序列 (默认长度): CCGGUGCUUC
RNA 序列 (自定义长度): GGUGUGUAUGCUACA
DNA 序列 (默认长度): AAAGGCCGAC
DNA 序列 (自定义长度): CAGATGAAGGAAGGT
随机单位: coulomb
单位名称: newton
单位符号: N
温度单位: °C
随机前缀: femto
获取正前缀: deca
获取负前缀符号: f

文本数据(text)

from mimesis import Text
from mimesis.enums import EmojyCategory

# 创建 Text 实例
text_provider = Text()

# 1. alphabet - 获取当前语言的字母表(支持大小写)
print("大写字母表:", text_provider.alphabet(lower_case=False))
print("小写字母表:", text_provider.alphabet(lower_case=True))

# 2. level - 生成表示“等级”的词语(如 critical, high)
print("等级描述:", text_provider.level())

# 3. text - 生成指定数量的句子组合成的段落
print("随机段落 (5句):", text_provider.text(quantity=5))

# 4. sentence - 生成一句随机句子
print("随机句子:", text_provider.sentence())

# 5. title - 生成一个标题(与 sentence 相似)
print("随机标题:", text_provider.title())

# 6. words - 生成指定数量的随机单词列表
print("多个随机单词 (5个):", text_provider.words(quantity=5))

# 7. word - 生成一个随机单词
print("随机单词:", text_provider.word())

# 8. quote - 生成一句名人名言或随机引用
print("引用语录:", text_provider.quote())

# 9. color - 生成随机颜色名称
print("随机颜色名称:", text_provider.color())

# 10. hex_color - 生成随机 HEX 颜色代码
print("HEX 颜色:", text_provider.hex_color())
print("安全颜色 (Flat UI):", text_provider.hex_color(safe=True))

# 11. rgb_color - 生成随机 RGB 颜色元组
print("RGB 颜色:", text_provider.rgb_color())
print("安全 RGB 颜色:", text_provider.rgb_color(safe=True))

# 12. answer - 生成一个随机的回答(是/否等)
print("随机回答:", text_provider.answer())

# 13. emoji - 生成一个随机 Emoji 表情(可指定类别)
print("默认表情:", text_provider.emoji())
print("人物类表情:", text_provider.emoji(category=EmojyCategory.PEOPLE_AND_BODY))
print("动物类表情:", text_provider.emoji(category=EmojyCategory.ANIMALS_AND_NATURE))
print("国旗类表情:", text_provider.emoji(category=EmojyCategory.FLAGS))

输出

大写字母表: ['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']
小写字母表: ['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']
等级描述: extreme
随机段落 (5句): Atoms are used within a program to denote distinguished values. Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is also a garbage-collected runtime system. Erlang is known for its designs that are well suited for systems. Haskell features a type system with type inference and lazy evaluation.
随机句子: Initially composing light-hearted and irreverent works, he also wrote serious, sombre and religious pieces beginning in the 1930s.
随机标题: Its main implementation is the Glasgow Haskell Compiler.
多个随机单词 (5个): ['basin', 'oem', 'diego', 'keywords', 'shirt']
随机单词: emerging
引用语录: You're gonna need a bigger boat.
随机颜色名称: Brown
HEX 颜色: #762427
安全颜色 (Flat UI): #9b59b6
RGB 颜色: (125, 14, 43)
安全 RGB 颜色: (189, 195, 199)
随机回答: No
默认表情: 🤎
人物类表情: 👨‍👨‍👦‍👦
动物类表情: 🐁
国旗类表情: 🇨🇨

交通工具(Transport)

from mimesis import Transport
from mimesis.locales import Locale

# 创建 Transport 实例
transport = Transport()

# 1. manufacturer - 生成一个随机汽车制造商
print("随机汽车制造商:", transport.manufacturer())

# 2. car - 生成一个随机汽车型号(品牌+型号)
print("随机汽车型号:", transport.car())

# 3. airplane - 生成一个随机飞机型号
print("随机飞机型号:", transport.airplane())

# 4. vehicle_registration_code(locale: Locale | None = None) - 获取车辆注册代码(按地区)
print("默认车辆注册码:", transport.vehicle_registration_code())
print("德国车辆注册码:", transport.vehicle_registration_code(locale=Locale.DE))
print("美国车辆注册码:", transport.vehicle_registration_code(locale=Locale.EN))
print("日本车辆注册码:", transport.vehicle_registration_code(locale=Locale.JA))

输出

随机汽车制造商: Lotus
随机汽车型号: Porsche 911 Turbo
随机飞机型号: Dassault Falcon 900
默认车辆注册码: RMM
德国车辆注册码: D
美国车辆注册码: USA
日本车辆注册码: J

全局调用(Generic)

from mimesis import Generic, Locale,Algorithm


# 创建 Generic 实例(默认使用英语环境)
generic = Generic(locale=Locale.ZH)

# 1. 获取地址信息
print("随机地址:", generic.address.address())
print("城市:", generic.address.city())
print("国家:", generic.address.country())

# 2. 获取二进制文件相关数据

# 接收图片文件数据并写入
image_data = generic.binaryfile.image()
with open('sample.png', 'wb') as f:
    f.write(image_data)

# 3. 获取金融相关信息
print("银行名称:", generic.finance.bank())
print("公司类型:", generic.finance.company_type())

# 4. 随机选择器(从列表中随机选值)
print("从列表中随机选一个:", generic.choice.choice(["A", "B", "C"]))

# 5. 生成各种编码数据(ISBN、EAN、PIN 等)
print("随机 PIN 码:", generic.code.pin())
print("随机 ISBN:", generic.code.isbn())

# 6. 日期时间相关(当前时间、未来时间等)
print("随机日期:", generic.datetime.date())
print("随机时间:", generic.datetime.time())

# 7. 开发相关(Git 提交、项目名等)
print("随机项目名:", generic.development.programming_language())
print("软件许可证", generic.development.software_license())

# 8. 文件相关(扩展名、文件名等)
print("随机文件名:", generic.file.file_name())
print("随机扩展名:", generic.file.extension())

# 9. 食物相关(水果、蔬菜等)
print("随机水果:", generic.food.fruit())
print("随机饮料:", generic.food.drink())

# 10. 硬件相关(分辨率、硬盘等)
print("随机屏幕分辨率:", generic.hardware.resolution())
print("随机硬盘类型:", generic.hardware.ssd_or_hdd())

# 11. 网络相关(IP、URL、Headers 等)
print("随机 IPv4 地址:", generic.internet.ip_v4())
print("随机 URL:", generic.internet.url())

# 12. 数字相关(浮点数、整数、复数等)
print("随机整数:", generic.numeric.integer_number())
print("随机浮点数:", generic.numeric.float_number())

# 13. 路径相关(用户路径、开发目录等)
print("根目录:", generic.path.root())
print("用户目录:", generic.path.user())

# 14. 支付相关(信用卡号、PayPal 账户等)
print("随机信用卡号:", generic.payment.credit_card_number())
print("PayPal 账户:", generic.payment.paypal())

# 15. 人物相关(姓名、性别、电话等)
print("随机姓名:", generic.person.full_name())
print("随机电话号码:", generic.person.telephone())

# 16. 科学相关(DNA/RNA 序列、单位、前缀等)
print("DNA 序列:", generic.science.dna_sequence())
print("SI 单位:", generic.science.measure_unit())

# 17. 文本相关(单词、句子、颜色、Emoji 等)
print("随机单词:", generic.text.word())
print("随机句子:", generic.text.sentence())
print("随机 Emoji 表情:", generic.text.emoji())

# 18. 交通相关(汽车型号、飞机型号等)
print("随机汽车型号:", generic.transport.car())
print("随机飞机型号:", generic.transport.airplane())

# 19. 加密相关(哈希、UUID、密码等)
print("随机 UUID:", generic.cryptographic.uuid())
print("SHA256 密码哈希:", generic.cryptographic.hash(algorithm=Algorithm.SHA256))

输出

随机地址: 邾城八条34号
城市: 梅州市
国家: 圣赫勒拿
银行名称: China Postal Savings Bank Co., Ltd.
公司类型: 有限公司
从列表中随机选一个: C
随机 PIN 码: 7784
随机 ISBN: 1-97331-910-7
随机日期: 2014-08-24
随机时间: 15:54:24.380785
随机项目名: Clojure
软件许可证 MIT License (MIT)
随机文件名: shop.exe
随机扩展名: .rar
随机水果: 核桃
随机饮料: 酸奶
随机屏幕分辨率: 1280x720
随机硬盘类型: SanDisk 128GB SSD
随机 IPv4 地址: 198.116.46.255
随机 URL: https://permit.zulu/
随机整数: 497
随机浮点数: -444.00041915442046
根目录: \
用户目录: \home\Coupled
随机信用卡号: 2450 3726 4541 6961
PayPal 账户: rock2036@example.org
随机姓名: 贤芸 狄
随机电话号码: +86 974-86902726
DNA 序列: ATCCGGCTAC
SI 单位: pascal
随机单词: 要务
随机句子: 燕君为了保持北部的安宁,被迫向东胡王媾和,而以大将为人质
随机 Emoji 表情: 👹
随机汽车型号: Ford Cortina
随机飞机型号: Airbus A220-300
随机 UUID: 5092f400-9faf-44b2-90ee-ed0e9607f769
SHA256 密码哈希: aa9e36d2bf91f6d28622ac2c21a67ea63eafc19b178d8c1392b0d76b03ad8ada

随机(random)

from enum import Enum
from mimesis.random import random
# 定义 Color 枚举
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print("\n中文描述: randints 函数")
print("输出:", random.randints(n=5, a=10, b=50))

print("\n中文描述: _generate_string 函数")
print("输出:", random._generate_string(str_seq="abc123", length=8))

print("\n中文描述: generate_string_by_mask 函数")
print("输出:", random.generate_string_by_mask(mask="@@@-###", char="@", digit="#"))

print("\n中文描述: uniform 函数")
print("输出:", random.uniform(a=1.5, b=10.5, precision=2))

print("\n中文描述: randbytes 函数")
print("输出:", random.randbytes(n=10))

print("\n中文描述: weighted_choice 函数")
print("输出:", random.weighted_choice(choices={"a": 0.5, "b": 1.5, "c": 2.0}))

print("\n中文描述: choice_enum_item 函数")
print("输出:", random.choice_enum_item(Color))

输出

中文描述: randints 函数
输出: [48, 27, 27, 19, 27]

中文描述: _generate_string 函数
输出: 31abb21c

中文描述: generate_string_by_mask 函数
输出: YLK-795

中文描述: uniform 函数
输出: 6.35

中文描述: randbytes 函数
输出: b'@\xa8\x9a\x0fH}$\xc9\x8a\x8c'

中文描述: weighted_choice 函数
输出: c

中文描述: choice_enum_item 函数
输出: Color.BLUE

模块化数据提供(Schema)

Generic

from mimesis import Generic, Schema
from mimesis.locales import Locale


generic = Generic(Locale.EN, seed=0xFF)

schema = Schema(
    lambda: {
        "pk": generic.numeric.increment(),
        "uid": generic.cryptographic.uuid(),
        "name": generic.text.word(),
        "version": generic.development.version(),
    },
    iterations=3,
)
schema.create()

Field

from mimesis import Field, Fieldset, Schema
from mimesis.enums import Gender, TimestampFormat
from mimesis.locales import Locale

field = Field(Locale.EN, seed=0xFF)
fieldset = Fieldset(Locale.EN, seed=0xFF)


schema_definition = lambda: {
        "pk": field("increment"),
        "uid": field("uuid"),
        "name": field("text.word"),
        "version": field("version"),
        "timestamp": field("timestamp", fmt=TimestampFormat.POSIX),
        "owner": {
            "email": field("person.email", domains=["mimesis.name"]),
            "creator": field("full_name", gender=Gender.FEMALE),
        },
        "apiKeys": fieldset("token_hex", key=lambda s: s[:16], i=3),
    }

schema = Schema(schema=schema_definition, iterations=2)
schema.create()
from mimesis import Field
from mimesis.enums import Locale

# 创建 Field 实例并指定本地化语言
field = Field(Locale.EN)

# 定义你想要随机选取的值列表
choices = ['apple', 'banana', 'cherry', 'date', 'elderberry']

# 使用 field('choice') 方法从列表中随机选择一个值
random_choice = field('choice', items=choices)

print(random_choice)