Python Faker教程展示了如何利用Faker软件包在Python中天生伪数据。我们利用joke2k/faker包。
文章目录1 先容1.1 大略的利用1.2 Faking names1.3 Faking jobs1.4 Faking currencies1.5 Faking words1.6 Faking profiles1.7 Faking numbers1.8 Faking hashes and uuids1.9 Faking internet related data1.10 Faking date and time1.11 faker函数列表2 参考1 先容Faker是一个天生假数据的Python库。伪数据常日用于测试或用一些伪数据填充数据库。Python Faker很大程度上受到了PHP的Faker、Perl的Data::Faker和Ruby的Faker的启示。该软件包与composer一起安装。其余,我们安装了Dumper,它在转储变量时供应更好的掌握台输出。
官方项目地址见:https://github.com/joke2k/faker
官方文档地址见:https://faker.readthedocs.io/en/master/index.html
# pip install Faker# pip install Dumper
通过faker.Faker()创建并初始化faker数据天生器,该天生器可以通过访问以数据类型命名的属性来天生数据。Faker将数据天生委托给供应者。默认供应程序利用英语区域设置。Faker支持其他地区措辞(包括中文);它们的完成程度不同。支持的措辞列表见:https://faker.readthedocs.io/en/master/locales.html
1.1 大略的利用下面示例输出假名称,地址,文本和随机浏览器信息。
from faker import Fakerfaker = Faker()# 天生随机名字print(f39;name: {faker.name()}')# 天生随机地址print(f'address: {faker.address()}')# 天生随机笔墨print(f'text: {faker.text()}')# 天生随机浏览器信息print(f'user_agent: {faker.user_agent()}')
name: Amanda Dickersonaddress: 85957 Walsh PlazaNorth Robert, TX 17246text: Character or new this catch director. Involve enter surface game. Tree smile hope degree sport participant.Capital out fast special approach worry.user_agent: Opera/8.26.(X11; Linux i686; lzh-TW) Presto/2.9.180 Version/10.00
当然可以在创建Faker天生器时通过措辞代号指定措辞,如下所示。常用支持的措辞代号见:https://faker.readthedocs.io/en/master/locales.html
from faker import Faker# 默认是en_USfaker = Faker('zh_CN')print(f'name: {faker.name()}')print(f'address: {faker.address()}')print(f'text: {faker.text()}')
name: 萧坤address: 新疆维吾尔自治区阳县锡山杭州街Y座 851331text: 当然看到帮助汽车的话在线.位置但是不是.欢迎不是以是通过操持为了.提高特殊手机.中央一贯我们.正在经营手机往后一样情形.特殊网上这里先容.到了科技阅读.当前经营紧张.注册投资时候.影响这种公司软件社区大小资料.支持那些一种客户有限公民日期本日.培植历史操持公司活动那么以是.认为文章新闻一样平常中文帖子.文章紧张那个发展增加所有.履历发布广告比较历史该当.单位须要系统他们.
1.2 Faking names
不才面示例中,我们假造与用户名有关的数据。
from faker import Fakerfaker = Faker('zh_CN')# 名字print(f'Name: {faker.name()}')# 名print(f'First name: {faker.first_name()}')# 姓print(f'Last name: {faker.last_name()}')print('--------------------------')# 男人名print(f'Male name: {faker.name_male()}')# 女人名print(f'Female name: {faker.name_female()}')
Name: 马淑英First name: 玉英Last name: 罗--------------------------Male name: 黄小红Female name: 黄建华
1.3 Faking jobs
利用job()接口天生假的事情。利用如下:
from faker import Fakerfaker = Faker('zh_CN')for _ in range(6): print(faker.job())
网站编辑呼叫中央客服招聘专员/助理测试员畜牧师水工
1.4 Faking currencies
下面的示例为货币创建假数据
from faker import Fakerfaker = Faker('zh_CN')# 仅支持英文输出# 天生货币print(f'currency: {faker.currency()}')# 货币名print(f'currency name: {faker.currency_name()}')# 货币代号print(f'currency code: {faker.currency_code()}')
currency: ('FJD', 'Fijian dollar')currency name: Tanzanian shillingcurrency code: PYG
1.5 Faking words
下面的示例为单词创建假数据
from faker import Fakerfaker = Faker('zh_CN')# 创建一个单词print(f'a word: {faker.word()}')# 创建六个单词print(f'six words: {faker.words(6)}')words = ['春天','夏天','秋日','冬天','白天','黑天']# 从预定义的单词列表中创建假单词print(f'customized unique words: {faker.words(2, words, True)}')
a word: 而且six words: ['如何', '如果', '自己', '单位', '同时', '来自']customized unique words: ['春天', '冬天']
1.6 Faking profiles
Faker可以利用simple_profile()创建大略的虚拟配置文件,利用profile()创建扩展配置文件。通过profile可以天生信息概要文件,该示例为男性和女性创建虚拟概要文件。
from faker import Fakerimport dumperfaker = Faker('zh_CN')profile1 = faker.simple_profile()dumper.dump(profile1)print('--------------------------')profile2 = faker.simple_profile('M')dumper.dump(profile2)print('--------------------------')profile3 = faker.profile(sex='F')dumper.dump(profile3)
<dict at 0x7f4ebfa51730>: username: 'napeng' name: '林冬梅' sex: 'M' address: '甘肃省荆门县白云李街w座 407872' mail: 'rbai@yahoo.com' birthdate: <str at 0x7f4ebf6ec530>: 'datetime.date(1908, 11, 20)'--------------------------<dict at 0x7f4ebefbe6e0>: username: 'zhaojing' name: '郑璐' sex: 'M' address: '广西壮族自治区桂英县魏都武汉路o座 706400' mail: 'fanwei@yahoo.com' birthdate: <str at 0x7f4ebeea08f0>: 'datetime.date(1953, 9, 22)'--------------------------<dict at 0x7f4ebf5aa8c0>: job: '股票/期货操盘手' company: '合联电子科技有限公司' ssn: '211403193711125294' residence: '山东省利县清河舒路N座 674496' current_location: <tuple at 0x7f4ebf705460> 0: <str at 0x7f4ebeea0df0>: "Decimal('23.160202')" 1: <str at 0x7f4ebeea0df0>: "Decimal('-132.788799')" blood_group: 'A+' website: ['https://www.wp.cn/', 'https://www.pingshao.cn/'] username: 'kdai' name: '王玲' sex: 'F' address: '西藏自治区磊县白云济南街h座 652495' mail: 'fang20@hotmail.com' birthdate: <str at 0x7f4ebeea08f0>: 'datetime.date(1985, 10, 18)'
1.7 Faking numbers
Faker许可天生随机数字和整数。
from faker import Fakerfaker = Faker('zh_CN')# 随机数print(f'Random int: {faker.random_int()}')# random_int()中指定天生0到100数字print(f'Random int: {faker.random_int(0, 100)}')# 天生数字0到9print(f'Random digit: {faker.random_digit()}')
Random int: 837Random int: 72Random digit: 1
1.8 Faking hashes and uuids
hashes和uuids的假造支持。下面示例天生三个伪哈希和一个uuid值
from faker import Fakerfaker = Faker('zh_CN')print(f'md5: {faker.md5()}')print(f'sha1: {faker.sha1()}')print(f'sha256: {faker.sha256()}')print(f'uuid4: {faker.uuid4()}')
md5: 01c570bf837bd5dd4a0d1f21d2d1005fsha1: 005a8185c78d72bfb6174f672ebcc65e92b3a2c8sha256: 0157d784e175bbcacef6334b4b840634b1af721212a9a582681dcd0a65435d6duuid4: 013bd385-9d37-4ecb-bd33-2afafb8b1350
1.9 Faking internet related data
Faker有多个用于假造Internet干系数据的访问器。下面示例显示了各种与Internet干系的数据,包括电子邮件,域名,段,IP地址和URL。个中一些数据是真实存在的,只是假造随机选择了互联网的数据,如url可以直接打开。
from faker import Fakerfaker = Faker('zh_CN')print(f'Email: {faker.email()}')print(f'Safe email: {faker.safe_email()}')print(f'Free email: {faker.free_email()}')print(f'Company email: {faker.company_email()}')print('------------------------------------')print(f'Host name: {faker.hostname()}')print(f'Domain name: {faker.domain_name()}')print(f'Domain word: {faker.domain_word()}')print(f'TLD: {faker.tld()}')print('------------------------------------')print(f'IPv4: {faker.ipv4()}')print(f'IPv6: {faker.ipv6()}')print(f'MAC address: {faker.mac_address()}')print('------------------------------------')print(f'Slug: {faker.slug()}')print(f'Image URL: {faker.image_url()}')
Email: juan03@yahoo.comSafe email: dingxiuying@example.comFree email: xiulanfeng@hotmail.comCompany email: tao55@yangxiuying.cn------------------------------------Host name: srv-22.yanping.cnDomain name: zou.cnDomain word: 96TLD: cn------------------------------------IPv4: 219.38.223.8IPv6: 247e:c6c6:eaaa:2466:b17f:ab9b:cb64:3d86MAC address: f4:89:6f:d4:6c:69------------------------------------Slug: Image URL: https://placeimg.com/654/868/any
1.10 Faking date and time
Faker有很多假造日期和韶光值的方法。
下面示例显示了假造的生日,日期韶光部分,时区和AM / PM方法
from faker import Fakerfaker = Faker('zh_CN')# 生日print(f'Date of birth: {faker.date_of_birth()}')# 世纪print(f'Century: {faker.century()}')# 年print(f'Year: {faker.year()}')# 月print(f'Month: {faker.month()}')# 英文月名print(f'Month name: {faker.month_name()}')# 星期名print(f'Day of week: {faker.day_of_week()}')# 日号print(f'Day of month: {faker.day_of_month()}')# 时区print(f'Time zone: {faker.timezone()}')# 上午下午print(f'AM/PM: {faker.am_pm()}')
Date of birth: 1962-01-19Century: IXYear: 1988Month: 08Month name: AprilDay of week: ThursdayDay of month: 10Time zone: Pacific/GalapagosAM/PM: AM
第二个示例显示了在当前世纪,十年,年份或月份中天生日期韶光值的方法。它还包括韶光序列值的天生。
from faker import Fakerfaker = Faker('zh_CN')# 本世纪的日期韶光print(f'Datetime this century: {faker.date_time_this_century()}')# 近十年的日期韶光print(f'Datetime this decade: {faker.date_time_this_decade()}')# 今年的日期韶光print(f'Datetime this year: {faker.date_time_this_year()}')# 本月的日期韶光print(f'Datetime this month: {faker.date_time_this_month()}')print('-------------------------')# # 本世纪的日期print(f'Date this century: {faker.date_this_century()}')# 近十年的日期print(f'Date this decade: {faker.date_this_decade()}')# 今年的日期print(f'Date this year: {faker.date_this_year()}')# 本月的日期print(f'Date this month: {faker.date_this_month()}')print('-------------------------')# 韶光间隔TOTAL_SECONDS = 6060242 # two days# 假造到现在为止韶光间隔为两天的序列series = faker.time_series(start_date='-12d', end_date='now', precision=TOTAL_SECONDS)for val in series: print(val[0])
Datetime this century: 2013-01-08 02:27:47Datetime this decade: 2020-03-01 18:24:33Datetime this year: 2020-06-20 01:18:59Datetime this month: 2020-06-08 01:25:48-------------------------Date this century: 2012-06-16Date this decade: 2020-02-25Date this year: 2020-04-23Date this month: 2020-06-14-------------------------2020-06-09 11:51:252020-06-11 11:51:252020-06-13 11:51:252020-06-15 11:51:252020-06-17 11:51:252020-06-19 11:51:25
1.11 faker函数列表
faker供应许多函数接口,本文并没有全部列出,详细见官方文档。可用的函数列表如下。直接在官方文档地址https://faker.readthedocs.io/en/master/providers.html,点击对应的函数列表链接,便有对应的利用解释。
'''faker.providersfaker.providers.addressfaker.providers.automotivefaker.providers.bankfaker.providers.barcodefaker.providers.colorfaker.providers.companyfaker.providers.credit_cardfaker.providers.currencyfaker.providers.date_timefaker.providers.filefaker.providers.geofaker.providers.internetfaker.providers.isbnfaker.providers.jobfaker.providers.loremfaker.providers.miscfaker.providers.personfaker.providers.phone_numberfaker.providers.profilefaker.providers.pythonfaker.providers.ssnfaker.providers.user_agent'''
2 参考
http://zetcode.com/python/faker/
https://faker.readthedocs.io/en/master/index.html