Python Faker教程展示了如何使用Faker软件包在Python中生成伪数据。我们使用joke2k/faker包。

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 Faker

faker = Faker()

print(f'name: {faker.name()}')
print(f'address: {faker.address()}')
print(f'text: {faker.text()}')
name: Sara Hood
address: 5550 Soto Extension
Katherinetown, HI 43412
text: Personal onto section structure. Song thing prove blue answer ok left sure.
Talk situation ahead soon parent score.
She break rather couple enjoy to. Relate prove possible wrong.

当然可以在创建Faker生成器时通过语言代号指定语言,如下所示。常用支持的语言代号见:

https://faker.readthedocs.io/en/master/locales.html

from faker import Faker

# 默认是en_US
faker = Faker('zh_CN') print(f'name: {faker.name()}')
print(f'address: {faker.address()}')
print(f'text: {faker.text()}')
name: 萧坤
address: 新疆维吾尔自治区阳县锡山杭州街Y座 851331
text: 当然看到帮助汽车的话在线.位置但是不是.欢迎不是所以通过计划为了.
提高特别手机.中心一直我们.
正在经营手机以后一样情况.特别网上这里介绍.
到了科技阅读.当前经营主要.注册投资时候.
影响这种公司软件社区记者大小资料.支持那些一种客户有限人民日期今天.建设历史计划公司活动那么所以.
认为文章新闻一般中文帖子.文章主要那个发展增加所有.
经验发布广告比较历史应该.单位需要系统他们.

1.2 Faking names

在下面示例中,我们伪造与用户名有关的数据。

from faker import Faker

faker = 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 Faker

faker = Faker('zh_CN')

for _ in range(6):
print(faker.job())
网站编辑
呼叫中心客服
招聘专员/助理
测试员
畜牧师
水工

1.4 Faking currencies

下面的示例为货币创建假数据

from faker import Faker

faker = 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 shilling
currency code: PYG

1.5 Faking words

下面的示例为单词创建假数据

from faker import Faker

faker = 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 Faker
import dumper faker = 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 Faker

faker = Faker('zh_CN')

# 随机数
print(f'Random int: {faker.random_int()}')
# random_int()中指定生成0到100数字
print(f'Random int: {faker.random_int(0, 100)}')
# 生成数字0到9
print(f'Random digit: {faker.random_digit()}')
Random int: 837
Random int: 72
Random digit: 1

1.8 Faking hashes and uuids

hashes和uuids的伪造支持。下面示例生成三个伪哈希和一个uuid值

from faker import Faker

faker = Faker('zh_CN')

print(f'md5: {faker.md5()}')
print(f'sha1: {faker.sha1()}')
print(f'sha256: {faker.sha256()}')
print(f'uuid4: {faker.uuid4()}')
md5: 01c570bf837bd5dd4a0d1f21d2d1005f
sha1: 005a8185c78d72bfb6174f672ebcc65e92b3a2c8
sha256: 0157d784e175bbcacef6334b4b840634b1af721212a9a582681dcd0a65435d6d
uuid4: 013bd385-9d37-4ecb-bd33-2afafb8b1350

1.9 Faking internet related data

Faker有多个用于伪造Internet相关数据的访问器。下面示例显示了各种与Internet相关的数据,包括电子邮件,域名,段,IP地址和URL。其中一些数据是真实存在的,只是伪造随机选择了互联网的数据,如url可以直接打开。

from faker import Faker

faker = 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.com
Safe email: dingxiuying@example.com
Free email: xiulanfeng@hotmail.com
Company email: tao55@yangxiuying.cn
------------------------------------
Host name: srv-22.yanping.cn
Domain name: zou.cn
Domain word: 96
TLD: cn
------------------------------------
IPv4: 219.38.223.8
IPv6: 247e:c6c6:eaaa:2466:b17f:ab9b:cb64:3d86
MAC 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 Faker

faker = 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-19
Century: IX
Year: 1988
Month: 08
Month name: April
Day of week: Thursday
Day of month: 10
Time zone: Pacific/Galapagos
AM/PM: AM

第二个示例显示了在当前世纪,十年,年份或月份中生成日期时间值的方法。它还包括时间序列值的生成。

from faker import Faker

faker = 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 = 60*60*24*2 # 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:47
Datetime this decade: 2020-03-01 18:24:33
Datetime this year: 2020-06-20 01:18:59
Datetime this month: 2020-06-08 01:25:48
-------------------------
Date this century: 2012-06-16
Date this decade: 2020-02-25
Date this year: 2020-04-23
Date this month: 2020-06-14
-------------------------
2020-06-09 11:51:25
2020-06-11 11:51:25
2020-06-13 11:51:25
2020-06-15 11:51:25
2020-06-17 11:51:25
2020-06-19 11:51:25

1.11 faker函数列表

faker提供许多函数接口,本文并没有全部列出,具体见官方文档。可用的函数列表如下。直接在官方文档地址

https://faker.readthedocs.io/en/master/providers.html,点击对应的函数列表链接,便有对应的使用说明。

'''
faker.providers
faker.providers.address
faker.providers.automotive
faker.providers.bank
faker.providers.barcode
faker.providers.color
faker.providers.company
faker.providers.credit_card
faker.providers.currency
faker.providers.date_time
faker.providers.file
faker.providers.geo
faker.providers.internet
faker.providers.isbn
faker.providers.job
faker.providers.lorem
faker.providers.misc
faker.providers.person
faker.providers.phone_number
faker.providers.profile
faker.providers.python
faker.providers.ssn
faker.providers.user_agent
'''

2 参考

http://zetcode.com/python/faker/

https://faker.readthedocs.io/en/master/index.html

[编程基础] Python数据生成库Faker总结的更多相关文章

  1. [编程基础] Python谷歌翻译库googletrans总结

    1 使用说明 本文介绍python谷歌翻译库接口googletrans的使用.具体见官方文档: https://py-googletrans.readthedocs.io/en/latest/#goo ...

  2. [编程基础] Python日志记录库logging总结

    Python日志记录教程展示了如何使用日志记录模块在Python中进行日志记录. 文章目录 1 介绍 1.1 背景 1.2 Python日志记录模块 1.3 根记录器 2 Python logging ...

  3. python随机生成库faker库api详解

    # -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/6/30 9:49 from faker import Factory # zh_CN ...

  4. [编程基础] Python配置文件读取库ConfigParser总结

    Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件. 文章目录 1 介绍 1.1 Python ConfigParser读取文件 1.2 Py ...

  5. Python数据可视化库-Matplotlib(一)

    今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...

  6. [编程基础] Python随机数生成模块总结

    Python随机数生成模块教程演示如何在Python中生成伪随机数. 1 介绍 1.1 随机数字生成器 随机数生成器(RNG)生成一组在外观上不显示任何可区分模式的值.随机数生成器分为两类:硬件随机数 ...

  7. Unix环境高级编程(二十一)数据库函数库

    本章的内容是开发一个简单的.多用户数据库的C函数库.调用此函数库提供的C语言函数,其他程序可以读取和存储数据库中的记录.绝大部分商用数据库函数库提供多进程同时更新数据库所需要的并发控制,采用建议记录锁 ...

  8. [编程基础] Python字符串替换笔记

    Python字符串替换笔记 Python字符串替换笔记主要展示了如何在Python中替换字符串.Python中有以下几种替换字符串的方法,本文主要介绍前三种. replace方法(常用) transl ...

  9. [编程基础] Python命令行解析库argparse学习笔记

    Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数. 文章目录 1 使用说明 1.1 Python argparse可选参数 1.2 Python ar ...

随机推荐

  1. Docker容器虚拟化

    Docker容器虚拟化 目录 Docker容器虚拟化 虚拟化网络 单节点容器间通信 不同节点容器间通信 虚拟化网络 Network Namespace 是 Linux 内核提供的功能,是实现网络虚拟化 ...

  2. 2022-08-05-欢迎使用_Typecho

    layout: post cid: 1 title: 欢迎使用 Typecho slug: start date: 2022/08/05 14:21:51 updated: 2022/08/05 14 ...

  3. Java注解(4):一个真实的Elasticsearch案例

    昨天把拼了一半的注解+Elasticsearch积木放下了,因为东西太多了拼不好,还容易乱.休息了一晚上接着来. 接着昨天,创建elasticsearch文档注解(相当于数据表的注解): /** * ...

  4. 2022年最新编辑Linux基础知识总结

    文章目录 1.Linux的目录结构 2.远程操作Linux和上传文件到Linux 3.文本编辑 4.快捷键 5.登录.注销.关机.重启 6.用户管理 6.1 .新用户注册 6.2.使用新用户登录 6. ...

  5. 齐博x1给表单某个字段设置初始值

    自定义表单虽然后台可以设置默认初始值,但是有时候想在前台动态设置初始值的话,可以在URL中添加该字段名,给他动态赋值即可.比如下面的price字段就是动态赋值的.

  6. Tensorflow Lite从入门到精通

    TensorFlow Lite 是 TensorFlow 在移动和 IoT 等边缘设备端的解决方案,提供了 Java.Python 和 C++ API 库,可以运行在 Android.iOS 和 Ra ...

  7. 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...

  8. 「浙江理工大学ACM入队200题系列」问题 F: 零基础学C/C++39——求方程的解

    本题是浙江理工大学ACM入队200题第四套中的F题 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习惯,尤其是要利用好输入和输出样例. ...

  9. 如何正确遵守 Python 代码规范

    前言 无规矩不成方圆,代码亦是如此,本篇文章将会介绍一些自己做项目时遵守的较为常用的 Python 代码规范. 命名 大小写 模块名写法: module_name 包名写法: package_name ...

  10. docker中php xdebug调试开发

    docker-compose环境来自:https://github.com/zhaojunlik...原文:http://blog.oeynet.com/post/9... 说明 在开发中,断点调试是 ...