注:本人使用的是windows7,以下所有是在window7环境下完成的

Faker是一个Python第三方库,可以用来生成你需要用到的假数据。无论您需要引导数据库、创建好看的XML文档、填充持久化以进行压力测试,还是对从生产服务中获取的数据进行匿名化,Faker都适合您。

使用pip安装Faker库。

pip install Faker

使用faker. faker()来创建和初始化一个faker生成器,它可以通过访问以所需数据类型命名的属性来生成数据。

from faker import Faker
fake = Faker()fake.name()
# 'Lucy Cechtelar'fake.address()
# '426 Jordy Lodge
#  Cartwrightshire, SC 88120-6700'fake.text()
# 'Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
#  beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt
#  amet quidem. Iusto deleniti cum autem ad quia aperiam.
#  A consectetur quos aliquam. In iste aliquid et aut similique suscipit. Consequatur qui
#  quaerat iste minus hic expedita. Consequuntur error magni et laboriosam. Aut aspernatur
#  voluptatem sit aliquam. Dolores voluptatum est.
#  Aut molestias et maxime. Fugit autem facilis quos vero. Eius quibusdam possimus est.
#  Ea quaerat et quisquam. Deleniti sunt quam. Adipisci consequatur id in occaecati.
#  Et sint et. Ut ducimus quod nemo ab voluptatum.'

每次调用方法fake.name()都会产生不同的(随机)结果。这是因为 fakerfaker.Generator.method_name()将调用转发给faker.Generator.format(method_name).

for _ in range(10):print(fake.name())# 'Adaline Reichel'
# 'Dr. Santa Prosacco DVM'
# 'Noemy Vandervort V'
# 'Lexi O'Conner'
# 'Gracie Weber'
# 'Roscoe Johns'
# 'Emmett Lebsack'
# 'Keegan Thiel'
# 'Wellington Koelpin II'
# 'Ms. Karley Kiehn V'

Pytest 固定装置

Faker也有它自己的pytest插件,它提供了一个faker可以在测试中使用的夹具。请查看pytest fixture 文档以了解更多信息。

供应商

每个生成器属性(如nameaddress和 lorem)都称为“假的”。一个 faker 生成器有很多,打包在“providers”中。

from faker import Faker
from faker.providers import internetfake = Faker()
fake.add_provider(internet)print(fake.ipv4_private())

检查扩展文档以获得捆绑提供者列表和社区提供者列表 。

本土化

faker.Faker可以将语言环境作为参数,以返回本地化数据。如果未找到本地化提供程序,工厂将回退到美国英语的默认 LCID 字符串,即:en_US。中文是:zn_ch

from faker import Faker
fake = Faker('it_IT')
for _ in range(10):print(fake.name())# 'Elda Palumbo'
# 'Pacifico Giordano'
# 'Sig. Avide Guerra'
# 'Yago Amato'
# 'Eustachio Messina'
# 'Dott. Violante Lombardo'
# 'Sig. Alighieri Monti'
# 'Costanzo Costa'
# 'Nazzareno Barbieri'
# 'Max Coppola'

faker.Faker还支持多个语言环境。v3.0.0 中的新功能。

from faker import Faker
fake = Faker(['it_IT', 'en_US', 'ja_JP'])
for _ in range(10):print(fake.name())# 鈴木 陽一
# Leslie Moreno
# Emma Williams
# 渡辺 裕美子
# Marcantonio Galuppi
# Martha Davis
# Kristen Turner
# 中津川 春香
# Ashley Castillo
# 山田 桃子

您可以在 providers 包下的源代码中检查可用的 Faker 语言环境。Faker 的本地化是一个持续的过程,为此我们需要您的帮助。请毫不犹豫地为您自己的语言环境创建本地化提供程序并提交合并请求 (PR)。

优化

Faker 的构造函数接受一个与性能相关的参数,称为 use_weighting. 它指定是否尝试使值的频率与真实世界的频率匹配(例如,英文名称 Gary 比名称 Lorimer 更频繁)。如果use_weightingFalse,则所有项目被选中的机会均等,并且选择过程要快得多。默认值为True

命令行用法

安装后,您可以从命令行调用 faker:

faker [-h] [--version] [-o output][-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}][-r REPEAT] [-s SEP][-i {package.containing.custom_provider otherpkg.containing.custom_provider}][fake] [fake argument [fake argument ...]]

在哪里:

  • faker: 是安装在您的环境中时的脚本,在开发中您可以改用python -m faker
  • -h--help: 显示帮助信息
  • --version: 显示程序的版本号
  • -o FILENAME: 将输出重定向到指定的文件名
  • -l {bg_BG,cs_CZ,...,zh_CN,zh_TW}: 允许使用本地化提供者
  • -r REPEAT: 将生成指定数量的输出
  • -s SEP: 将在每次生成输出后生成指定的分隔符
  • -i {my.custom_provider other.custom_provider}要使用的其他自定义提供程序列表。请注意,这是包含您的 Provider 类的包的导入路径,而不是自定义 Provider 类本身。
  • fake: 是要为其生成输出的伪造名称,例如 nameaddress, 或text
  • [fake argument ...]:传递给假的可选参数(例如,配置文件假采用逗号分隔的字段名称的可选列表作为第一个参数)

例子:

$ faker address
968 Bahringer Garden Apt. 722
Kristinaland, NJ 09890$ faker -l de_DE address
Samira-Niemeier-Allee 56
94812 Biedenkopf$ faker profile ssn,birthdate
{'ssn': '628-10-1085', 'birthdate': '2008-03-29'}$ faker -r=3 -s=";" name
Willam Kertzmann;
Josiah Maggio;
Gayla Schmitt;

如何创建提供者

from faker import Faker
fake = Faker()# first, import a similar Provider or use the default one
from faker.providers import BaseProvider# create new provider class
class MyProvider(BaseProvider):def foo(self) -> str:return 'bar'# then add new provider to faker instance
fake.add_provider(MyProvider)# now you can use:
fake.foo()
# 'bar'

如何创建动态提供者

动态提供者可以从外部源读取元素。

from faker import Faker
from faker.providers import DynamicProvidermedical_professions_provider = DynamicProvider(provider_name="medical_profession",elements=["dr.", "doctor", "nurse", "surgeon", "clerk"],
)fake = Faker()# then add new provider to faker instance
fake.add_provider(medical_professions_provider)# now you can use:
fake.medical_profession()
# 'dr.'

如何自定义 Lorem Provider

如果您不想使用默认的 lorem ipsum,您可以提供自己的词组。以下示例显示了如何使用从cakeipsum中选取的单词列表来执行此操作:

from faker import Faker
fake = Faker()my_word_list = [
'danish','cheesecake','sugar',
'Lollipop','wafer','Gummies',
'sesame','Jelly','beans',
'pie','bar','Ice','oat' ]fake.sentence()
# 'Expedita at beatae voluptatibus nulla omnis.'fake.sentence(ext_word_list=my_word_list)
# 'Oat beans oat Lollipop bar cheesecake.'

Faker库如何生成数据相关推荐

  1. Faker库:生成测试数据

    在做程序开发的时候,我们经常会用到一些测试数据.在 Python 中有个神库,叫做 Faker,它可以自动帮我们来生成各种各样的看起来很真的"假"数据,让我们来看看吧! 安装 首先 ...

  2. Faker库:一个数据造假的神库

    ''' 你还在手敲数据吗? 你需要数据造假吗? 你想要高效生成数据吗? faker库可以帮到你!!! 安装方法: pip install faker ''' from faker import Fak ...

  3. python faker库随机假数据介绍

    前言 在数据相关的测试中,我们经常会需要去构造数据,随机生成数据.大部分人的写法会是用random 随机生成: 比如我们要生成随机的姓名,我们要构造下面的一段代码: def random_first_ ...

  4. Laravel 中 Faker库 生成数据方法总结

    No1.生成 No.1基础生成 – Faker\Provider\Base $randomDigit = $faker->randomDigit; // 生成0-9之间的随机数 $randomD ...

  5. python安卓库拍照_Python Faker库的实战,用Faker库生成伪造的安卓通讯录

    老板的需求总是各种各样的,作为程序员就只能想办法实现.这不突然让帮他生成几个虚假的通讯录.具体需求是这样的:老板给我个电话簿,让我给这个电话簿添加上姓名,公司,邮箱之类的数据然后导入到安卓手机的通讯录 ...

  6. 【使用Python+Faker+xlwt 】生成批量数据,并以xlsx格式导出数据

    前置工作:在终端安装插件 1.Faker主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成 **pip3 install ...

  7. Python自动生成数据日报

    对于一个企业来说,高层看意义,中层看结论,基层看落地,数据日报.周报.月报可以监控销售个人在实际执行过程中的销售动态,而数据季度报.年报可以反映一个销售策略是否与实际的业务场景切合. 可见数据日报在我 ...

  8. 用pandas实现剧组表格道具用到faker库

    某剧组在拍摄一部反映都市白领生活的电视剧,主人公Amy在一家公司做销售工作.这天,她在公司整理客户数据,加班到很晚,有一个镜头需要拍摄她使用电脑整理的客户资料的画面.由于影视作品是面向公众的,不能展示 ...

  9. Python Faker库的使用

    项目开发初期,为了测试方便,尽量模拟真实环境.比如要创建一批用户名,创建一段文本,电话号码,街道地址.IP地址等等.平时我们基本是键盘一顿乱敲,随便造个什么字符串出来,当然谁也不认识谁.现在你不要这样 ...

最新文章

  1. stm32编码器正反转计数程序_编码器接线方法你会吗?
  2. python运行程序-Python中四种运行其他程序的方式
  3. Linux查找文件 —— whereis 、 find、 locate、 which
  4. 同等质量下那种图片格式小_八个PPT图片处理必会的神技巧,帮你轻松做出高质量PPT...
  5. spinningup 绘制曲线
  6. 流畅的python学习记录——第五章:一等函数
  7. 利用python爬取图片_利用Python爬取网页图片
  8. MES管理系统这5个模块,可保障板式定制家具的生产需求
  9. java编程进阶类_进阶Java编程(9)反射与类操作
  10. layui upload 提示语
  11. 技术总监岗位职责和要求
  12. 计算机桌面设置,电脑入门(十一)桌面个性化设置
  13. 汉洛塔hanoi递归问题
  14. java 之动态生成类
  15. win10问题:无任何操作,2分钟后电脑就自动休眠
  16. 天猫精灵开发技能【3】
  17. dell服务器维修服务网点,上海戴尔服务器*维修点 戴尔服务器不开机死机电源主板维修*换...
  18. android+反调试+方案,Android反调试笔记
  19. http://nian.so/#网站的拓展工具编写
  20. Redis实现在线用户列表(按登录时间排序、可查询、踢人)

热门文章

  1. 用户密码校验,至少包含大小写字母、数字、特殊字符其中三种,且不少于6位
  2. 机器人材料整理中的套-假-大-空话
  3. java多线程学习之【Exchanger】
  4. 佳士得将举行火星、月球和其他稀有陨石线上拍卖会
  5. mysql t.com_window系统上Apache PHP MySQL Tcomcat Resin整合 - Apache - 数安时代(GDCA)SSL证书官网...
  6. 如何用计算机制作多媒体作品,用计算机创作多媒体作品教学反思.doc
  7. MySQL中数据类型的长度问题解析
  8. C语言中string函数详解
  9. c++string函数详解
  10. mysql表字段长度限制_mysql表字段类型长度限制