Python数据生产器,Facker神器

311 阅读4分钟

在软件开发、测试或者数据分析过程中,有时候会需要一些测试数据。做测试的时候,需要模拟真实的环境,但是又不能直接使用真实数据,就需要我们人为制造一些数据出来。

当需要的数据比较多,本身又不存在要手动创建的时候,你会创建造假数据可能比技术本身还让人头疼。今天就为大家介绍一个造假数据的Python神器 - Facker

Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。它可生成我们生活中大多数常用的数据,包括:姓名、所在省份、详细地址、手机号、身份证号、出生年月、邮箱等。

1. 安装

pip install faker

2. 基本用法

Faker的使用起来非常简单,先创建一个Faker对象,然后调用方法直接产生需要的数据。

from faker import Faker # 1. 创建Faker对象,设置语言 faker = Faker(locale='zh_CN')

创建Faker对象的时候需要设置创建的数据对应的语言,默认是英文数据。下面是所有可用的语言值:

可选择的语言: 
ar_EG - 阿拉伯语 - 埃及 
ar_PS - 阿拉伯语 - 巴勒斯坦 
ar_SA - 阿拉伯语 - 沙特阿拉伯 
bg_BG - 保加利亚语 - 保加利亚 
cs_CZ - 捷克语 - 捷克 
de_DE - 德语 - 德国 
dk_DK - 丹麦语 - 丹麦 
el_GR - 希腊语 - 希腊 
en_AU - 英语 - 澳大利亚 
en_CA - 英语 - 加拿大 
en_GB - 英语 - 英国 
en_US - 英语 - 美国 
es_ES - 西班牙语 - 西班牙 
es_MX - 西班牙语- 墨西哥 
et_EE - 爱沙尼亚语 - 爱沙尼亚 
fa_IR - 波斯语 - 伊朗 
fi_FI - 芬兰语 - 芬兰 
fr_FR - 法语 - 法国 
hi_IN - 印地语 - 印度 
hr_HR - 克罗地亚语 
hu_HU - 匈牙利语 
hy_AM - 亚美尼亚语 
it_IT - 意大利语 
ja_JP - 日语 
ko_KR - 朝鲜语 
ka_GE - 格鲁吉亚语 
lt_LT - 立陶宛语 
lv_LV - 拉脱维亚语 
ne_NP - 尼泊尔语 
nl_NL - 德语 
no_NO - 挪威语 
pl_PL - 波兰语 
pt_BR - 葡萄牙语 - 巴西 
pt_PT - 葡萄牙语 - 葡萄牙 
ru_RU - 俄语 
sl_SI - 斯诺文尼亚语 
sv_SE - 瑞典语 
tr_TR - 土耳其语 
uk_UA - 乌克兰语 
zh_CN - 简体中文 
zh_TW - 繁体中文

通过Faker对象可以调用不同的方法来生成不同的信息对应的数据,下面通过代码生成几个常见的数据:

# 2.常见的信息 
# 姓名 print(faker.name()) 
# 详细地址 print(faker.address()) 
# 省份 print(faker.province()) 
# 电话号码 print(faker.phone_number()) 
# 身份证号码 print(faker.ssn()) 
# 出生年月 print(faker.ssn()[6:14]) 
# 邮箱 print(faker.email())

下面是执行结果:

图片.png

3. 常见数据

3.1 address地址

fake.country() # 国家 
fake.city() # 城市 
fake.city_suffix() # 城市的后缀,中文是:市或县 
fake.address() # 地址 
fake.street_address() # 
街道 fake.street_name() # 街道名 
fake.postcode() # 邮编 
fake.latitude() # 维度 
fake.longitude() # 经度

3.2 person 人物

fake.name() # 姓名 
fake.last_name() # 姓 
fake.first_name() # 名 
fake.name_male() # 男性姓名 
fake.last_name_male() # 男性姓 
fake.first_name_male() # 男性名 
fake.name_female() # 女性姓名

3.3 color 颜色

fake.hex_color() # 16进制表示的颜色 
fake.rgb_css_color() # css用的rgb色 
fake.rgb_color() # 表示rgb色的字符串 
fake.color_name() # 颜色名字 
fake.safe_hex_color() #安全16进制色 
fake.safe_color_name() # 安全颜色名字

3.4 company 公司

fake.company() # 公司名 
fake.company_suffix() # 公司名后缀

3.5 credit_card 银行信用卡

fake.credit_card_number(card_type=None) # 卡号 fake.credit_card_provider(card_type=None) # 卡的提供者 fake.credit_card_security_code(card_type=None)# 卡的安全密码 fake.credit_card_expire() # 卡的有效期 fake.credit_card_full(card_type=None) # 完整卡信息

3.6 date_time 时间日期

fake.date_time(tzinfo=None) # 随机日期时间 
fake.iso8601(tzinfo=None) # 以iso8601标准输出的日期 fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某个日期 
fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某个日期 
fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None) # 本年代内的一个日期 
fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None) # 本世纪一个日期 
fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None) # 两个时间间的一个随机时间 
fake.timezone() # 时区 
fake.time(pattern="%H:%M:%S") # 时间(可自定义格式) 
fake.am_pm() # 随机上午下午 fake.month() # 随机月份 
fake.month_name() # 随机月份名字 
fake.year() # 随机年 
fake.day_of_week() # 随机星期几 
fake.day_of_month() # 随机月中某一天 
fake.time_delta() # 随机时间延迟 
fake.date_object() # 随机日期对象 
fake.time_object() # 随机时间对象 
fake.unix_time() # 随机unix时间(时间戳) 
fake.date(pattern="%Y-%m-%d") # 随机日期(可自定义格式) fake.date_time_ad(tzinfo=None) # 公元后随机日期

3.7 file 文件

fake.file_name(category="image", extension="png") # 文件名(指定文件类型和后缀名) fake.file_name() # 随机生成各类型文件 
fake.file_extension(category=None) # 文件后缀 
fake.mime_type(category=None) # mime-type

3.8 internet 互联网

fake.ipv4(network=False) # ipv4地址 
fake.ipv6(network=False) # ipv6地址 
fake.uri_path(deep=None) # uri路径 
fake.uri_extension() # uri扩展名 
fake.uri() # uri 
fake.url() # url 
fake.image_url(width=None, height=None) # 图片url 
fake.domain_word() # 域名主体 
fake.domain_name() # 域名 
fake.tld() # 域名后缀 
fake.user_name() # 用户名 
fake.user_agent() # UA 
fake.mac_address() # MAC地址 
fake.safe_email() # 安全邮箱 
fake.free_email() # 免费邮箱 
fake.company_email() # 公司邮箱 
fake.email() # 邮箱

3.9 job 工作

fake.job()#工作职位

3.10 lorem 乱数假文

fake.text(max_nb_chars=200) # 随机生成一篇文章 
fake.word() # 随机单词 
fake.words(nb=3) # 随机生成几个字 
fake.sentence(nb_words=6, variable_nb_words=True) # 随机生成一个句子 fake.sentences(nb=3) # 随机生成几个句子 
fake.paragraph(nb_sentences=3, variable_nb_sentences=True) # 随机生成一段文字(字符串) 
fake.paragraphs(nb=3) # 随机生成成几段文字(列表)

3.11 phone_number 电话号码

fake.phone_number() # 手机号码 
fake.phonenumber_prefix() # 运营商号段,手机号码前三位

3.12 ssn 社会安全码(身份证)

fake.ssn() # 随机生成身份证号(18位)

3.13 user_agent 用户代理

fake.user_agent()