造假高手——faker

在测试写好的代码时通常需要用到一些测试数据,大量的真实数据有时候很难获取,如果手动制造测试数据又过于繁重无聊,显得不够优雅,今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库,包括名字、地址、个人信息等等。

安装与导入

安装方法还是一如既往地使用pip,导入模块使用import:

pip install fakerimport faker

可以通过faker.VERSION查看当前的版本号,当前的版本是25.6.0:

import faker
print('version:', faker.VERSION)

快速入门

先上一个开胃菜,用Faker()创建一个实例后,就可以调用其各种方法产生数据了。比如可以生成人名:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
for _ in range(5):print(f.name())

运行结果:

Steven Willis
Benjamin Hill
Melvin Rojas
Jennifer Murphy
Joshua Campbell

还可以用来生成生日,电话号码,地址等等:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
for _ in range(3):print('------------')print(f.date_of_birth())print(f.phone_number())print(f.address())

运行结果:

------------
1997-09-01
529.482.9021
Unit 8185 Box 6814
DPO AA 37409
------------
2015-09-17
(301)615-7713x0680
7840 Day Harbor Suite 026
East Mathewmouth, VI 97795
------------
1910-03-22
562.480.2124
5117 Smith Garden Apt. 887
Mckeemouth, NY 41801

当然你也可以使用profile()方法一次性生成个人信息,它会返回一个字典:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
for _ in range(3):print('------------')print(f.profile()) 

运行结果:

------------
{'job': 'Plant breeder/geneticist', 'company': 'Chavez Group', 'ssn': '074-71-6734', 'residence': '73464 Ellen Oval Suite 221\nJohnstonton, MH 34069', 'current_location': (Decimal('24.686039'), Decimal('-72.858181')), 'blood_group': 'AB-', 'website': ['https://flores.net/'], 'username': 'millernicole', 'name': 'Johnathan Brown', 'sex': 'M', 'address': '758 Margaret Circles\nEast Kimberly, SD 83729', 'mail': 'donald53@hotmail.com', 'birthdate': datetime.date(1957, 12, 26)}
------------
{'job': 'Pharmacologist', 'company': 'Hines-Church', 'ssn': '227-59-1302', 'residence': '8967 Jones Dam Suite 855\nWest Joshua, AL 96476', 'current_location': (Decimal('-17.084763'), Decimal('-50.191502')), 'blood_group': 'B-', 'website': ['http://www.west.com/', 'https://smith-bond.com/', 'https://www.bennett.com/', 'http://www.riddle-henry.com/'], 'username': 'brobinson', 'name': 'Rebecca Wagner', 'sex': 'F', 'address': '16695 Benjamin Stravenue\nEast Ashleyport, RI 03937', 'mail': 'mary26@hotmail.com', 'birthdate': datetime.date(2010, 7, 23)}
------------
{'job': 'Scientist, water quality', 'company': 'Morrison-Smith', 'ssn': '764-95-8711', 'residence': 'Unit 7343 Box 8997\nDPO AE 53882', 'current_location': (Decimal('-45.831201'), Decimal('-108.873691')), 'blood_group': 'O-', 'website': ['http://www.peterson.info/', 'https://www.yu-garcia.com/', 'https://floyd.com/'], 'username': 'kellysabrina', 'name': 'Kevin Farrell', 'sex': 'M', 'address': 'PSC 8064, Box 5841\nAPO AP 42559', 'mail': 'brettobrien@gmail.com', 'birthdate': datetime.date(1975, 2, 17)}

在这个基础上再配合一些excel文件操作的轮子,就可以生成海量的个人数据表格了。

生成本地化数据

上面的例子产生的数据都是英文格式的,faker还支持本地化数据的生成,在创建实例的时候传入本地化名称就可以生成本地化的数据了,比如zh_CN表示简体中文,de表示德语:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker('zh_CN') # 简体中文
print(f.profile()) 
print('------------')
f = faker.Faker('de')    # 德语
print(f.profile()) 

运行结果:

{'job': '客户关系经理/主管', 'company': '昂歌信息网络有限公司', 'ssn': '500119198203064590', 'residence': '湖北省兴安盟县西夏张路E座 464036', 'current_location': (Decimal('7.489519'), Decimal('-87.200968')), 'blood_group': 'O-', 'website': ['https://www.br.cn/', 'https://yangtan.cn/', 'https://www.yan.cn/', 'http://www.liaodu.net/'], 'username': 'yongcheng', 'name': '王璐', 'sex': 'M', 'address': '天津市齐齐哈尔市 南长太原路j座 219593', 'mail': 'uma@hotmail.com', 'birthdate': datetime.date(1992, 5, 16)}
------------
{'job': 'Florist', 'company': 'Zorbach Linke GmbH', 'ssn': '091-65-7927', 'residence': 'Mosemanngasse 344\n40555 Ribnitz-Damgarten', 'current_location': (Decimal('-12.8105965'), Decimal('-116.973434')), 'blood_group': 'AB+', 'website': ['https://www.etzold.com/'], 'username': 'ruppertfrancesco', 'name': 'Pavel Tröst', 'sex': 'M', 'address': 'Heide-Marie-Kensy-Straße 52\n47818 Regensburg', 'mail': 'birgitfiebig@googlemail.com', 'birthdate': datetime.date(1922, 2, 15)}

从生成的数据可以看出不止语言种类变成本地的了,证件号码等也更符合本地习惯了。

生成Python类型数据

可以用faker构造Python各种类型的数据,调用方法的字面含义对应了各种数据类型:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
print(f.pybool())
print(f.pydecimal())
print(f.pyfloat())
print(f.pyint())
print(f.pyiterable())
print(f.pyobject())
print(f.pyset())
print(f.pystr())
print(f.pystr_format())
print(f.pystruct())
print(f.pytuple()) 

运行结果:

False
-7534455542987561356113628832979261.70990856922647895810773411809628052352287239687350573409296713442359054729
427159196.361446
6675
{'pgraham@example.net', Decimal('6872284488449216471957839793155854569545064378722120702945395180848502303424001840580570158125356748.7793062'), 'EXWgzlwSpyWFShgwHNDF', 'fSvHqsnaGWsGhEEJIotB', 'http://davis-mcclure.com/main/blogindex.html', datetime.datetime(1982, 12, 14, 23, 27, 57), 'fpexXngYbuLutAgmWOJE', 3096, 'http://briggs.org/blog/blogpost.jsp', datetime.datetime(1974, 12, 23, 16, 31, 21), 692152127.295639}
None
{1473, datetime.datetime(2012, 2, 20, 4, 35), Decimal('-8691892256320476451330461966694019289630053652.9818474697172363980351686154'), Decimal('-6092666319162567623091417475408257822206629559682585452982.094118774251103965849'), 6213, 'RrnoGIfvmuQBoBdlpIzc', 'https://gutierrez.biz/searchfaq.html', 'cSPqoWxjwTfEGHIKNljK', 'https://phillips-choi.biz/main/tag/wp-contenthome.php', 'uihAHgngmSfDDgHLGIJP', datetime.datetime(1997, 7, 31, 19, 57, 25)}
zayyBBMnNEVRiNfyeajH
k1-1575907r
(['UBTxMuBnQwCobUpxgQMQ', 'UVgQcMuLMHuCvdJPEbZa', 'BoBuRkizqOoGIrcnKdkL', 'IDYDljKXsDfajdMZSHTV', 'nSSiJrTtQfnltbOhvWUv', 'leekathleen@example.net', 262, 'perezpatricia@example.org', Decimal('-533959985214553907880347948693.63324148979663176726156215249'), 'https://hill.com/wp-contentprivacy.html'], {'begin': 'lSqLniOoqxYItDeukapD', 'letter': 'mbBTFWLBAAsdQNhoeUWu', 'production': -3546120093.9101, 'past': datetime.datetime(2016, 11, 6, 18, 15, 1), 'drug': -29630.3663326707, 'present': -51749807124277.3, 'good': 1911, 'southern': 'EaJaouSqDJecbdJZturi', 'none': 'bzEbchIXdkfbPszdbPmB', 'beautiful': 2315}, {'take': {0: datetime.datetime(1979, 2, 9, 20, 6, 32), 1: ['http://blanchard.com/posts/postssearch.asp', 'eyOFbMgJDVBvHJcVQecY', 'melissanoble@example.net'], 2: {0: 9525, 1: 'victoriajones@example.com', 2: [datetime.datetime(2002, 10, 2, 5, 18, 42), 'DiABZjAdOLMOpBLNEUHC']}}, 'son': {1: 7976, 2: [1952, 2295, 'oholmes@example.org'], 3: {1: 'MtcCstAHTIsfirDyPZaA', 2: 'williamsbenjamin@example.org', 3: ['OVbtFiFUfHMvtfpIvzfq', 'CkyKLHWtxZoSMohOlZxD']}}, 'build': {2: 'http://munoz-cunningham.com/listregister.asp', 3: [39445.420028368, datetime.datetime(1982, 5, 15, 21, 40, 31), 7613], 4: {2: 'https://www.wright.com/explorefaq.htm', 3: -747788701919.703, 4: ['BwsyBqsXBLFediJnuadz', 5232]}}, 'major': {3: 'uQywiJzpStzsfVzeydIb', 4: [5285, 'bellmegan@example.com', Decimal('13643880946233419338490611479883994244038422660712924459842967394420958219281339340894537943982755.72183838529930169635960503603484140907480')], 5: {3: 'WGHMzNrGZVnZDTYSSiwv', 4: 1098, 5: [Decimal('581667631758055.948919259694472081221547906118090694694246000805018461205162489186334117'), 55655088534506.9]}}, 'alone': {4: 'floUhEjRbrcSlAgcUpKD', 5: [Decimal('40460646468928113699089077054899257009329837469260688073185695917293247833429683896.714863632410773250047819137693371237432869444562'), Decimal('908359844318342044820741412710171302924614850402079414883000182982603257371834095009905194897618.522803095432216'), 9565], 6: {4: 7628, 5: 'http://www.morales.com/tags/blogauthor.php', 6: ['ywofrJlhNlRygzWaQyFG', 'LCPEXbaOMvySYXOJWTpr']}}, 'best': {5: 'SpDVimYBzlhDJuNqkCWZ', 6: ['http://huang-wilson.org/tagterms.php', 'pLHKBjnndXRwnCHWsOGA', 'lrBxOnsJaIVKUGzxzFmD'], 7: {5: 'nHqumVtLaojDxgWRSRWt', 6: datetime.datetime(1981, 3, 11, 7, 30, 36), 7: [-65287331886129.9, 'mCPAlfJeIDeJPSjXhYJh']}}, 'bed': {6: 603974611145.587, 7: [datetime.datetime(2022, 4, 5, 11, 27, 34), 6993, 'gzDaXfcJCtnKAPAcLFhP'], 8: {6: 'kerjRozaRPCDbZTQDmgp', 7: 'wdKSJclVYlacchXshEed', 8: ['uyonjvlKDYXjQHHQUFdV', 'http://alvarez.net/categorieshomepage.html']}}, 'maintain': {7: 'IGgpKZaLhMvnHemTlGPU', 8: [datetime.datetime(1981, 1, 9, 19, 3, 5), 'tkOvlzaRCBKBtvyyqYNF', 958512.14122953], 9: {7: datetime.datetime(1985, 8, 2, 17, 12, 38), 8: -90490922.8079221, 9: [1267, 1876]}}, 'series': {8: 'scottdanielle@example.net', 9: ['http://ferguson.com/postsabout.html', 'http://www.johnson.net/explore/posts/categorycategory.html', 'gRlIYioszFWXCQrIOxnh'], 10: {8: 'http://cole.com/search/categorieshome.html', 9: 'TYUeKnLxGuUmzRJkkgvS', 10: ['zkVQuXYdxBGvUtFwUoPS', 2525]}}, 'final': {9: datetime.datetime(2002, 4, 27, 18, 23, 7), 10: [8014, Decimal('-321878064168199974704821670217881200123635942527.2989283812924630'), 7818], 11: {9: 3947, 10: datetime.datetime(1973, 11, 6, 4, 2, 39), 11: [746, -233.858433632642]}}})
(-68966651.3545535, 'tSldfjPXVumsygGlregG', Decimal('8655211367549380687362246206540408714340924126865723445408313926282213290900553.7363316869323588360628883398509312389090488'), 'http://www.boyle-neal.info/tag/wp-content/categoryauthor.html', 1321, -21.578299715633, -910.317290443833, 'EoLTtwTlZktihakadESE')

生成时间数据

用faker生成日期、星期、时区等时间数据:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()  
print(f.date())         # 日期
print(f.time())         # 时间
print(f.date_time())    # 日期和时间 
print(f.timezone())     # 时区
print(f.iso8601())      # iso8601时间
print(f.year())         # 年
print(f.month())        # 月
print(f.day_of_month()) # 日 
print(f.day_of_week())  # 星期

运行结果:

1998-09-04
18:56:33
2002-05-29 22:59:23
Africa/Freetown
2019-10-22T21:23:01
1975
03
20
Wednesday

生成颜色数据

用faker生成颜色名称、16进制颜色数值、RGB颜色数值:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()  
print(f.color_name())  
print(f.hex_color())     
print(f.rgb_color())  

运行结果:

LightCyan
#cc958d
21,126,12

命令行工具

faker还提供了命令行工具,直接在命令行中生成数据。下面的例子在命令行生成5条地址信息,其中-l指定本地化语言,-r后面带生成数据的条数:

E:\juzicode\faker造假高手>faker address  -l zh_CN  -r 5  
海南省成都市清浦胡街M座 379873贵州省雪梅县大兴辛集路z座 521807江苏省梧州市涪城康路B座 763552陕西省宁德县沈河吴路m座 763816吉林省坤县静安姚街L座 838843

你还可以通过-h参数查看帮助解锁到更多的技能:

E:\juzicode\faker造假高手>faker -h
usage: faker [-h] [--version] [-v] [-o output] [-l LOCALE] [-r REPEAT] [-s SEP] [--seed SEED] [-i [INCLUDE ...]] [fake] [fake argument ...]faker version 25.6.0positional arguments:fake                  name of the fake to generate output for (e.g. profile)fake argument         optional arguments to pass to the fake (e.g. the profile fake takes an optional list of comma separated field names as the first argument)options:-h, --help            show this help message and exit--version             show program's version number and exit

通过前面的介绍,我们了解了faker的基本用法,本文列出的案例只是faker库的一小部分功能,你还可以用faker生成ip地址、邮箱地址、用户代理等互联网数据,也可以生成文本数据、财务数据、地理数据、文件名称等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/344469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++STL初阶(3):string模拟实现的完善

1.流提取>>的优化(利用缓存区的思想) istream& operator>>(istream& is,string& str) {str.clear();char c;c is.get();while (c ! \0 && c ! \n) {str c;c is.get();}return is; } 在上文的对string的实践中&#…

Android Lottie 体积优化实践:从 6.4 MB 降到 530 KB

一、说明 产品提出需求:用户有 8 个等级,每个等级对应一个奖牌动画。 按照常用的实现方式: 设计提供 8 个 lottie 动画(8 个 json 文件)。研发将 json 文件打包进入 APK 中。根据不同等级播放指定的动画。 每一个 …

React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放

图片预览和视频在线播放 需求描述 实现播放视频的需求时,往往是前端直接加载一个mp4文件,这样做法在遇到视频文件较大时,容易造成卡顿,不能及时加载出来。我们可以将视频进行切片,然后分段加载。播放一点加载一点&am…

Nginx(openresty) 查看连接数和并发送

1 通过浏览器查看 #修改nginx配置文件 location /status {stub_status on;access_log off;allow 192.168.50.0/24;deny all;} #重新加载 sudo /usr/local/openresty/nginx/sbin/nginx -s reloadActive connections //当前 Nginx 当前处理的活动连接数。 server accepts handl…

【kubernetes】k8s集群中的ingress(对外服务)规则详解

目录 一、Ingress 简介 1.1service的作用 1.2外部访问方案 (四种)🌹🌹🌹 部署externalIPs 1.3Ingress 是什么 二、Ingress 组成🌹🌹🌹 三、Ingress 工作原理🐱&#x1f…

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的,不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。 kafka会再…

九家大模型“决战”高考!AI作文哪家强?阅卷名师点评来了!

2024.06.07 本文字数:12474,阅读时长大约21分钟 导读:语文老师对AI作文的评价是,“中规中矩,没有‘血肉’,缺一点情感和灵气。” 作者 | 第一财经 刘晓洁 冯小芯 马一凡 吕倩 又到一年高考季,…

使用树莓派和 L298N 来 DIY 小车底盘

树莓派小车可以作为 STEM(科学、技术、工程、数学)教育的工具,在实际操作中帮助学生理解和学习电子技术、编程和机器人原理。可以培养学生的动手能力、解决问题的能力和创新思维。 随着近年 AI 技术的高速发展,SLAM、VSLAM 甚至带…

[office] Excel教学:Excel通配符怎么用? #其他#职场发展

Excel教学:Excel通配符怎么用? 尽管Excel使用了很多年,但很多人都还是忽略了Excel通配符的存在,不知道通配符是什么,不知道如何使用它。今天我就完整地介绍一下通配符,让你彻底地认识通配符。 关于通配符…

结构体(1)<C语言>

导言 结构体是C语言中的一种自定义类型,它的值(成员变量)可以是多个,且这些值可以为不同类型,这也是和数组的主要区别,下面将介绍它的一些基本用法,包括:结构体的创建、结构体变量的…

MySQL基础_10.约束

文章目录 第一章、约束1.1 约束的定义1.2 非空约束1.3 唯一性约束1.4 主键约束1.5 自增列1.6 外键约束1.7 CHECK约束1.8 DEFAULT约束 第一章、约束 1.1 约束的定义 约束是对表中字段的限制。 约束按照作用范围可以分为:列级约束和表级约束 列级约束:声…

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS 集成网卡驱动 Marvell AQC 网卡定制版

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 集成网卡驱动 Marvell AQC 网卡定制版 VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U2 集成驱动版,在个人电脑上运行企业级工作负载 请访问原文链…

基于SpringBoot+Vue旅游民宿信息管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

计算机SCI期刊,中科院2区,IF=6.9,收稿范围非常广泛

一、期刊名称 Journal of King Saud University—Computer and Information Sciences 二、期刊简介概况 期刊类型:SCI 学科领域:计算机科学 影响因子:6.9 中科院分区:2区 三、期刊征稿范围 《沙特国王大学计算机与信息科学杂…

电脑提示msvcp140.dll丢失的解决方法(附带详细msvcp140.dll文件分析)

msvcp140.dll是一个动态链接库(DLL)文件,属于Microsoft Visual C 2015 Redistributable的一部分。它全称为 "Microsoft C Runtime Library" 或 "Microsoft C Runtime Library",表明该文件是微软C运行时库的一…

【数据可视化系列】使用Python和Seaborn绘制相关性热力图

热力图(Heatmap)是一种数据可视化工具,它通过使用颜色的深浅来展示数据矩阵中数值的大小或密度。在热力图中,每种颜色的深浅代表数据的一个特定值或值的范围,通常使用红色、黄色和绿色等颜色渐变来表示数据的热度&…

《数字电路》

问答题4*5 在数字电路中,三极管经常工作在哪两种开关状态? 在数字电路中,三极管经常工作在饱和导通状态和截止状态。 时序电路根据输出信号分为哪两类? 时序电路根据输出信号分为莫尔型和米里型两类。 写出三种以上常用的二-十…

JVM学习-监控工具(三)

jconsole 从Java5开始,在JDK中自带的java监控和管理控制台用于对JVM中内存、线程、和类等的监控,是一个基本JMX(java management extendsions)的GUI性能监控工具 三种连接方式 Local:使用JConsole连接是一个正在本地系统运行的JVM&#xf…

XR和Steam VR项目合并问题

最近有一个项目是用Steam VR开发的,里面部分场景是用VRTK框架做的,还有一部分是用SteamVR SDK自带的Player预制直接开发的。 这样本身没有问题,因为最终都是通过SteamVR SDK处理的,VRTK也管理好了SteamVR的逻辑,并且支…

JVM学习-内存泄漏

内存泄漏的理解和分类 可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一上对象是否还被引用,对于这种情况下,由于代码的实现不同就会出现很多内存泄漏问题(让JVM误以为此对象还在引用,无法回收,造成内存泄…