Python Faker 快速生成模拟数据 您所在的位置:网站首页 根据已有数据生成数据 Python Faker 快速生成模拟数据

Python Faker 快速生成模拟数据

2024-05-21 11:13| 来源: 网络整理| 查看: 265

Python Faker 伪装者.jpg

[TOC]

在软件需求、开发、测试过程中经常需要使用一些测试数据,针对这种情况,开发者一般要么使用已有的系统数据,要么需要手动制造一些数据。然而手动制造数据需要花费大量精力和工作量,Python Faker 能够协助你完成这方面的工作。

1.什么是 Faker

Faker 是一个 Python 包,也是一个开源的 GITHUB 项目,主要用来创建伪数据。使用 Faker 包,无需再手动生成或者手写随机数来生成数据,只需要调用 Faker 提供的方法,即可完成数据的生成。

Github项目地址

2.安装 Faker 方法一:使用 Python 包管理工具 pip 进行安装 pip install faker 方法二:通过访问 Github项目地址 下载编译安装。

推荐采用方法一。

3.Faker 的使用

Faker 的使用较简单,基本就是引包——初始化——调用方法。

3.1 基础使用步骤

步骤1:在 Python 模块中引用 Faker 包;

步骤2:初始化 Faker。

from faker import Faker # 省略的代码…… f=Faker(locale='zh_CN') 初始化参数locale:locale 参数是对于将要生成数据的文化属性的一个选项,默认为 en_US ,只有使用了相关文化,才能生成相对应的随机信息(比如:名字,地址,邮编,城市,省份等) 3.2 可选择的文化信息(按字母顺序排序)

Faker 支持 39 个国家和地区的语言与文化。

'ar_EG' - Arabic (Egypt) / 埃及(阿拉伯语) 'ar_PS' - Arabic (Palestine) / 巴勒斯坦(阿拉伯语) 'ar_SA' - Arabic (Saudi Arabia) / 沙特阿拉伯(阿拉伯语) 'bg_BG' - Bulgarian / 保加利亚(保加利亚语) 'cs_CZ' - Czech / 捷克(捷克语) 'de_DE' - German / 德国(德语) 'dk_DK' - Danish / 丹麦(丹麦语) 'el_GR' - Greek / 希腊(希腊语) 'en_AU' - English (Australia) / 澳大利亚(英语) 'en_CA' - English (Canada) / 加拿大(英语) 'en_GB' - English (Great Britain) / 英国(英语) 'en_US' - English (United States) / 美国(英语) 'es_ES' - Spanish (Spain) / 西班牙(西语) 'es_MX' - Spanish (Mexico) / 墨西哥(西语) 'et_EE' - Estonian / 爱沙尼亚(爱沙尼亚语) 'fa_IR' - Persian (Iran) / 伊朗(波斯语) 'fi_FI' - Finnish / 芬兰(芬兰语) 'fr_FR' - French / 法国(法语) 'hi_IN' - Hindi / 印地语 'hr_HR' - Croatian / 克罗地亚(克罗地亚语) 'hu_HU' - Hungarian / 匈牙利(匈牙利语) 'it_IT' - Italian / 意大利(意大利语) 'ja_JP' - Japanese / 日本(日语) 'ko_KR' - Korean / 韩国(韩语) 'lt_LT' - Lithuanian / 立陶宛(立陶宛语) 'lv_LV' - Latvian / 拉脱维亚(拉脱维亚语) 'ne_NP' - Nepali / 尼泊尔(尼泊尔语) 'nl_NL' - Dutch (Netherlands) / 荷兰(荷兰语) 'no_NO' - Norwegian / 挪威(挪威语) 'pl_PL' - Polish / 波兰(波兰语) 'pt_BR' - Portuguese (Brazil) / 巴西(葡萄牙语) 'pt_PT' - Portuguese (Portugal) / 葡萄牙(葡萄牙语) 'ru_RU' - Russian / 俄罗斯(俄语) 'sl_SI' - Slovene / 斯洛文尼亚(斯洛文尼亚语) 'sv_SE' - Swedish / 瑞典(瑞典语) 'tr_TR' - Turkish / 土尔其(土尔其语) 'uk_UA' - Ukrainian / 乌克兰(乌克兰语) 'zh_CN' - Chinese (China) / 汉语(中华人民共和国) 'zh_TW' - Chinese (Taiwan) / 汉语(中华人民共和国台湾地区)

然后即可使用系统提供的方法:

一段简单的测试代码

# 代码片段 01 from faker import Faker f=Faker(locale='zh_CN') f.name() #生成姓名 f.address() #生成地址 4.常用方法一览

Faker 提供的方法众多,这里进行了初步整理,分为 12 大类。

4.01 行政区划与地理 country_code():国家编码 currency_code():货币编码 country():国家 province():省份 district():区 city_suffix():市,县 postcode():邮编 street_address():街道地址 street_name():街道名 street_suffix():街、路 geo_coordinate():地理坐标 latitude():地理坐标(纬度) longitude():地理坐标(经度) 4.02 随机数 numerify():三位随机数字 random_digit():0~9随机数 random_digit_not_null():1~9的随机数 random_element():随机字母 random_int():随机数字,默认0~9999,可以通过设置min,max来设置 random_letter():随机字母 random_number():随机数字,参数digits设置生成的数字位数 lexify():替换所有问号(“?”)带有随机字母的事件。 4.03 颜色 color_name():随机颜色名 hex_color():随机HEX颜色 rgb_color():随机RGB颜色 safe_color_name():随机安全色名 safe_hex_color():随机安全HEX颜色 4.04 组织 bs():随机公司服务名 company():随机公司名(长) company_prefix():随机公司名(短) company_suffix():公司性质 4.05 日期时间 am_pm():AM/PM century():随机世纪 date():随机日期 date_between():随机生成指定范围内日期,参数:start_date,end_date取值:具体日期或者today,-30d,-30y类似 date_between_dates():随机生成指定范围内日期,用法同上 date_object():随机生产从1970-01-01到指定日期的随机日期。 date_this_month(): date_this_year(): date_time():随机生成指定时间(1970年01月01日至今) date_time_ad():生成公元1年到现在的随机时间 date_time_between():用法同dates future_date():未来日期 future_datetime():未来时间 month():随机月份 month_name():随机月份(英文) past_date():随机生成已经过去的日期 past_datetime():随机生成已经过去的时间 time():随机24小时时间 timedelta():随机获取时间差 time_object():随机24小时时间,time对象 time_series():随机TimeSeries对象 timezone():随机时区 unix_time():随机Unix时间 year():随机年份 4.06 文件类 file_extension():随机文件扩展名 file_name():随机文件名(包含扩展名,不包含路径) file_path():随机文件路径(包含文件名,扩展名) mime_type():随机 MIME 类型 ascii_company_email():随机 ASCII 公司邮箱名 ascii_email():随机 ASCII 邮箱 ascii_free_email(): ascii_safe_email(): company_email():随机企业邮箱地址 4.07 信息与网络类 domain_name():生成域名 domain_word():域词(即,不包含后缀) f.image_url():随机URL地址 ipv4():随机IP4地址 ipv6():随机IP6地址 mac_address():随机MAC地址 tld():网址域名后缀(.com,.net.cn,等等,不包括.) uri():随机URI地址 email(): free_email(): free_email_domain(): f.safe_email():安全邮箱 uri_extension():网址文件后缀 uri_page():网址文件(不包含后缀) uri_path():网址文件路径(不包含文件名) url():随机URL地址 user_name():随机用户名 isbn10():随机ISBN(10位) isbn13():随机ISBN(13位) job():随机职位 4.08 文本类 paragraph():随机生成一个段落 paragraphs():随机生成多个段落,通过参数nb来控制段落数,返回数组 sentence():随机生成一句话 sentences():随机生成多句话,与段落类似 text():随机生成一篇文章(不要幻想着人工智能了,至今没完全看懂一句话是什么意思) word():随机生成词语 words():随机生成多个词语,用法与段落,句子,类似 4.09 编码 binary():随机生成二进制编码 language_code():随机生成两位语言编码 boolean():True/False locale():随机生成语言/国际 信息 md5():随机生成MD5 password():随机生成密码,可选参数:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母 sha1():随机SHA1 sha256():随机SHA256 uuid4():随机UUID null_boolean():NULL/True/False 4.10人物类 first_name():随机生成西方人名( first name ) first_name_female():女性名 first_name_male():男性名 first_romanized_name():罗马名 last_name():随机生成西方人姓( last name ) last_name_female():女姓 last_name_male():男姓 last_romanized_name(): name():随机生成全名 name_female():男性全名 name_male():女性全名 romanized_name():罗马名 msisdn():移动台国际用户识别码,即移动用户的ISDN号码 phone_number():随机生成手机号 phonenumber_prefix():随机生成手机号段 profile():随机生成档案信息 simple_profile():随机生成简单档案信息 ssn():生成身份证号 credit_card_expire():随机信用卡到期日 credit_card_full():生成完整信用卡信息 credit_card_number():信用卡号 credit_card_provider():信用卡类型 credit_card_security_code():信用卡安全码 4.11 指定类型数据 pybool():随机生成布尔值 pydecimal(): pydict():随机生成字典 pyfloat():left_digits=5 #生成的整数位数, right_digits=2 #生成的小数位数, positive=True #是否只有正数 pyint():随机生成整数 pyiterable() pylist() pyset() pystr() pystruct() pytuple() 4.12 Web 与浏览器类 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信息 5.使用中与文化相关的注意事项

不同的文化类,方法是有区别的。

比如,在中文(zh_CN)中的方法,district()#获取区 province()#获取省的方法,在有些包里是没有的,这需要根据所使用文化类的国家特制来。

使用日文包没有province方法 比如,中国的一级行政单位,是省,直辖市,自治区;而日本的一级行政单位,是都、道、府、县。所以,日文包(ja_JP)中,就没有相应的province(),district(),取而代之的是prefecture(),town();在美国,一级行政单位是州,所以,在美国英语包(en_US)中,取而代之的是state();

总之,在使用不同Fake类之前,最好对所生成文化的国家信息做初步的了解,建议先浏览其对应的类文件的成员。

6.简单示例 # coding=utf-8 # 代码片段 02 # 代码位置:views.py """ 版权信息 (CopyRight) : All Right Reserved, Design & Develop By Halcyony 辉云科技 项目名称 (Project Name) : Hobbit04_dev 文件标题 (Title) : Testing staff / 自动添加模拟员工信息 文件描述 (Description) : 最后修改时间 @作者(Author) @版本(Version) @说明 (Description) --------------- ------------- --------------- ------------------- 2020-03-30 15:27 Steven Nominz 1.0 创建文档 """ import datetime from django.http import HttpResponse from faker import Faker from org.models.m_staff import Staffs f = Faker(locale='zh_CN') def faker_check_m_staff(request): """ 向员工表(org_staff)中自动添加模拟数据 每次添加 10 名员工 2020-03-30 16:00 测试成功 访问的 url :http://127.0.0.1:8000/api/v1/org/c_staff/ :param request: :return: """ result = 0 times = 10 for i in range(times): ssn = f.ssn() if (int(ssn[16]) % 2) == 0: gender = "女" name = f.name_female() else: gender = "男" name = f.name_male() birthday_str = ssn[6:10] + '-' + ssn[10:12] + '-' + ssn[12:14] birthday = datetime.datetime.strptime(birthday_str, '%Y-%m-%d').date() p = Staffs(staff_name=name, staff_gender=gender, staff_birthday=birthday, staff_ssn=ssn, # call=f.phone_number(), # profile=f.profile() ) p.save() result += i return HttpResponse('成功添加%s 等 %s 名模拟员工信息。' % (name, times))


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有