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​​

fakerphp编程基本 Python数据生成库Faker总结 PHP

官方文档地址见:​​​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(f'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: PYG1.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: 11.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-2afafb8b13501.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/any1.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:251.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​​