1. FlyPython首页
  2. Python高级话题

Fake (almost) everything with Faker

假的(几乎)一切与假的

Sunny Srinidhi

Fake (almost) everything with Faker
摄影: dasha shchukova on Unsplash

我最近的任务是创建一些随机的客户数据,包括姓名、电话号码、地址和其他常见的东西。起初,我想我只需要生成随机的字符串和数字(一些乱码) ,然后就可以收工了。但是后来我想起我的同事们为此使用了一个包裹。我知道,每件事都有一个包裹,嗯,几乎每件事都有。

不管怎样,我觉得我应该试试。这些天我开始编写一些严肃的 Python 代码,并且认为探索 Python 可用的各种包是一个好主意。我执行了 pip 命令,下载了这个包,并开始在 CSV 文件中生成一些随机的人。很有趣。所以我想我会记录下这个过程,因为考虑到我的历史,我肯定会忘记伪造者。

安装冒牌货

安装 Faker 与使用 pip 安装任何其他 Python 包没有什么不同。您可以使用以下任何一个命令来安装假冒者。

pip install faker 
pip3 install faker 
python -m pip install faker 
python3 -m pip install faker

根据您所安装的 Python 版本,使用适当的命令来安装 Faker 包。应该不会超过几分钟。

将冒牌货导入代码并初始化它

将冒牌包导入到代码中也没有什么不同。只需在 Python 文件的开头添加以下 import 语句,就可以开始了。

from faker import Faker

导入包之后,需要创建一个 Faker 类的对象。您可以使用以下命令完成此操作。不过,locale 参数是可选的。你可以跳过这个步骤,你会完全没事的。

faker = Faker(locale='en_US')

让我们先看看它能做什么

在深入研究代码之前,让我们先看看它能为我们做些什么。

My name is Mx. Linda Dunn III , I'm a gender neutral person. You can call me at 001-099-311-6470, or email me at caroljohnson@hotmail.com, or visit my home at 2703 Fitzpatrick Squares Suite 785 New Crystal, MN 18112 My name is Dr. John Harris MD , I'm a male. You can call me at (276)611-1727, or email me at combstiffany@brown-rivers.org, or visit my home at 7409 Peterson Locks Apt. 270 South Kimfurt, IL 79246 My name is Dr. Ann Huynh DVM , I'm a female. You can call me at 543.024.8936, or email me at timothy30@shea-poole.com, or visit my home at 5144 Rubio Island South Kenneth, WI 22855

这是我编写的一个简单的 Python 脚本的输出,用来生成虚假的客户数据或虚假的人。看看这个,它看起来是多么的真实。我用来得到这个输出的代码如下:

from faker import Fakerfaker = Faker(locale='en_US')print("My name is %s %s %s , I'm a gender neutral person. You can call me at %s, or email me at %s, or visit my home at %s" %(faker.prefix_nonbinary(), faker.name_nonbinary(), faker.suffix_nonbinary(), faker.phone_number(), faker.ascii_free_email(), faker.address()))print("My name is %s %s %s , I'm a male. You can call me at %s, or email me at %s, or visit my home at %s" %(faker.prefix_male(), faker.name_male(), faker.suffix_male(), faker.phone_number(), faker.ascii_company_email(), faker.address()))print("My name is %s %s %s , I'm a female. You can call me at %s, or email me at %s, or visit my home at %s" %(faker.prefix_female(), faker.name_female(), faker.suffix_female(), faker.phone_number(), faker.company_email(), faker.address()))

你现在可以看到,生成大量虚假客户是多么容易,当然是为了测试。乐趣还没有结束。还有很多这样的东西。你可以创建一个完整的公司,例如:

The company I just created!David PLCProviders of Horizontal value-added knowledge userPhone: 001-891-255-4642x93803Email: ksanchez@cochran.com234 Torres PortsWest Rhonda, AL 96210

从上面的输出可以看出,我们提供了一些很好的横向增值知识用户。这应该是该公司的口头禅。

我不是开玩笑,有一个方法叫 bs ()。我不知道你什么时候用过,但是你随时都可以称之为骗子的 b ()。看到我做了什么吗?

这有什么帮助?

我还以为你已经知道了呢。无论如何,当您需要数据来进行测试,并且需要这些数据尽可能真实(或尽可能真实)时,您可以使用 Faker 来轻松快速地生成测试数据。

实际上,我不确定我最后一句话中的“快速”部分。生成数据绝对容易。但是,为了生成100万条客户记录,包括姓名、电子邮件、电话等等,在一台2019年的16英寸基本型号的 MacBook Pro 上花费了将近350秒。所以随便你怎么做。

摘要

尽管如此,这绝对是一个非常方便和有趣的包在您的武器库中。您可以产生任何数量的客户或朋友(摇摆随时随地你摇摆)非常容易与完整的离线和在线个人资料为每个人。您可以生成家庭电话和电子邮件,工作电话和电子邮件,家庭地址,工作地址,利益,个人资料,信用卡,车牌号码,等等。因此,请直接访问软件包的 Github repo,查看一下周围的情况,并使用它进行一次转换。源代码也很容易理解。

原创文章,作者:flypython,如若转载,请注明出处:http://flypython.com/advanced-python/576.html