楔子
我们平时在做测试的时候,经常会使用一些假数据,而Python中有一个包叫faker(不是打LOL的那个),专门用来生成假数据,并且生成的假数据非常逼真,下面我们就来看一下。
faker使用方法
基本使用
faker使用起来非常简单,我们看一下就知道了。
1
2
3
4
5
6
7
8
|
from faker import Faker # 导入Faker这个类, 实例化即可 fake = Faker(locale = "zh_CN" ) # 然后调用里面的方法即可生成相应的假数据 print (fake.name()) # 谢秀华 print (fake.address()) # 四川省莉县白云沈阳路o座 313522 |
看起来还挺逼真的,但是有一点需要注意,这里的地址并不是真实的地址,而是随机组合出来的,也就是将省、市、道路之类的随机组合在一起。
另外我们在实例化Faker这个类的时候,指定了locale="zh_CN",表示生成中文数据,因为默认是英文数据。faker可以生成多个语言的假数据,支持的语言如下:
- 简体中文:zh_CN
- 繁体中文:zh_TW
- 美国英文:en_US
- 英国英文:en_GB
- 德文:de_DE
- 日文:ja_JP
- 韩文:ko_KR
- 法文:fr_FR
我们举个栗子:
1
2
3
4
5
6
7
8
9
10
11
12
|
from faker import Faker fake = Faker(locale = "ja_JP" ) # 指定为日本 print (fake.name()) # 渚 あすか print (fake.address()) # 栃木県西多摩郡奥多摩町花川戸41丁目7番10号 コート中宮祠994 # 指定为台湾 fake = Faker(locale = "zh_TW" ) print (fake.name()) # 趙美琪 print (fake.address()) # 23149 新營頂福州巷3段653號3樓 |
除了上面的name和address,faker还支持生成很多其它的数据。
地理信息类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
from faker import Faker fake = Faker(locale = "zh_CN" ) # 1. 随机打印一个国家, 此时跟Faker里面locale无关 print (fake.country()) # 吉布提 # 2. 国家编码, 此时跟Faker里面locale无关 print (fake.country_code()) # KW # 3. 打印区, 此时是中国的区 print (fake.district()) # 朝阳 # 4. 打印纬度 print (fake.latitude()) # -39.076213 # 5. 打印经度 print (fake.longitude()) # 138.988316 # 6. 打印邮编 print (fake.postcode()) # 881534 # 7. 打印省份 print (fake.province()) # 新疆维吾尔自治区 # 8. 打印详细地址 print (fake.address()) # 河北省淑英县丰都永安街D座 260864 # 9. 打印街道地址 print (fake.street_address()) # 姜街c座 # 10. 打印街道名 print (fake.street_name()) # 海门街 # 11. 获取市、县 (打印的是后缀, 要么是县、要么是市) print (fake.city_suffix()) # 市 print (fake.city_suffix()) # 县 # 12. 打印街、路(打印的是后缀, 要么是路、要么是街) print (fake.street_suffix()) # 路 print (fake.street_suffix()) # 街 |
基础信息类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
from faker import Faker fake = Faker(locale = "zh_CN" ) # 1. 生成身份证号 print (fake.ssn()) # 513428197105280989 # 2. 生成公司服务名 print (fake.country_code()) # HT # 3. 随机公司名(长) print (fake.company()) # 创联世纪科技有限公司 # 4. 随机公司名(短) print (fake.company_prefix()) # 信诚致远 # 5. 公司性质 print (fake.company_suffix()) # 信息有限公司 # 6. 随机信用卡到期日 print (fake.credit_card_expire()) # 03/28 # 7. 生成完整信用卡信息 print (fake.credit_card_full()) """ xx JCB 16 digit 勇 赵 3505427828999283 12/22 CVC: 463 """ # 8. 信用卡号 print (fake.credit_card_number()) # 44980244740048 # 9. 信用卡类型 print (fake.credit_card_provider()) # Mastercard # 10. 信用卡安全码 print (fake.credit_card_security_code()) # 581 # 11. 随机职位 print (fake.job()) # 新媒体运营 # 12. 女性的名 print (fake.first_name_female()) # 丽娟 # 13. 男性的名 print (fake.first_name_male()) # 彬 # 14. 女性的姓和男性的姓, 这里的姓和上面的名组合起来得到一个完整的姓名 # 说实话个人觉得last_name_female打印姓有点别扭, 可能老外习惯将姓写在后、名字也在前 # 另外,关于姓,个人觉得其实男女没有太大区别 print (fake.last_name_female()) # 高 print (fake.last_name_male()) # 杨 # 15. 打印全名 print (fake.name()) # 田小红 # 16. 男性全名 print (fake.name_male()) # 朱燕 # 17. 女性全名 print (fake.name_female()) # 王凯 # 18. 随机生成手机号 print (fake.phone_number()) # 18035736881 # 19. 随机生成手机号段 print (fake.phonenumber_prefix()) # 147 |
计算机基础、Internet信息类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from faker import Faker fake = Faker(locale = "zh_CN" ) # 1. 随机ASCII公司邮箱名 print (fake.ascii_company_email()) # minghan@jy.org # 2. 随机ASCII邮箱 print (fake.ascii_email()) # gang38@yongcui.cn # 3. 公司邮箱 print (fake.company_email()) # xiuyinggao@guoxia.org # 4. 邮箱 print (fake.email()) # yang28@hotmail.com # 5. 安全邮箱 print (fake.safe_email()) # jieqiao@example.com |
网络基础信息类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
from faker import Faker fake = Faker(locale = "zh_CN" ) # 1. 生成域名 print (fake.domain_name()) # lijuan.net # 2. 域词(即,不包含后缀) print (fake.domain_word()) # weiyang # 3. 随机IP4地址 print (fake.ipv4()) # 12.16.224.95 # 4. 随机IP6地址 print (fake.ipv6()) # e6b:5814:4d63:1496:9e0d:eb44:e114:722b # 5. 随机MAC地址 print (fake.mac_address()) # 8a:1c:ce:eb:f0:5c # 6. 网址域名后缀(com, net, cn等等,不包括.) print (fake.tld()) # cn # 7. 随机URI地址 print (fake.uri()) # https://na.cn/login/ # 8. 网址文件后缀 print (fake.uri_extension()) # .htm # 9. 网址文件(不包含后缀) print (fake.uri_page()) # homepage # 10. 网址文件路径(不包含文件名) print (fake.uri_path()) # categories # 11. 随机URL地址 print (fake.url()) # https://jingsong.cn/ # 12. 随机用户名 print (fake.user_name()) # jing13 # 13. 随机URL地址 print (fake.image_url()) # https://dummyimage.com/109x622 |
浏览器信息类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
from faker import Faker fake = Faker(locale = "zh_CN" ) # 1. 随机生成Chrome的浏览器user_agent信息 print (fake.chrome()) # Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_7) AppleWebKit/535.0 (KHTML, like Gecko) Chrome/26.0.870.0 Safari/535.0 # 2. 随机生成FireFox的浏览器user_agent信息 print (fake.firefox()) # Mozilla/5.0 (Android 3.2.2; Mobile; rv:15.0) Gecko/15.0 Firefox/15.0 # 3. 随机生成IE的浏览器user_agent信息 print (fake.internet_explorer()) # Mozilla/5.0 (compatible; MSIE 8.0; Windows 98; Win 9x 4.90; Trident/3.1) # 4. 随机生成Opera的浏览器user_agent信息 print (fake.opera()) # Opera/9.47.(X11; Linux i686; cv-RU) Presto/2.9.186 Version/11.00 # 5. 随机生成Safari的浏览器user_agent信息 print (fake.safari()) """ Mozilla/5.0 (iPod; U; CPU iPhone OS 4_2 like Mac OS X; ne-NP) AppleWebKit/534.29.1 (KHTML, like Gecko) Version/3.0.5 Mobile/8B119 Safari/6534.29.1 """ # 6. 随机Linux信息 print (fake.linux_platform_token()) # X11; Linux x86_64 # 7. 随机user_agent信息 print (fake.user_agent()) # Mozilla/5.0 (Windows NT 5.0; si-LK; rv:1.9.1.20) Gecko/2017-09-23 19:50:28 Firefox/3.8 |
数字类
这个意义不大,完全可以使用Python的内置模块,或者numpy来实现,这里不说了。
文本、加密类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
from faker import Faker fake = Faker(locale = "zh_CN" ) # 1. 随机字符串 print (fake.pystr()) # nyfOoBhwiCAYECiKOULE # 2. 随机字母 print (fake.random_element()) # c # 3. 随机字母 print (fake.random_letter()) # A # 4. 随机生成一个段落 print (fake.paragraph()) # 产品特别为了文章.研究不同评论就是还是工程. # 5. 随机生成多个段落 print (fake.paragraphs()) """ ['一下手机希望责任.合作空间联系最大.', '用户免费中心部分就是如何男人.次数美国自己影响程序服务.你的类别欢迎日本是一.', '数据情况工作一起发展应该自己.发展资源内容.'] """ # 6. 随机生成一句话 print (fake.sentence()) # 更新法律学生应用. # 7. 随机生成多句话,与段落类似 print (fake.sentences()) # ['服务不过而且对于美国今天价格.', '发布全国语言帖子.', '产品关系问题产品.'] # 8. 随机生成一篇文章 print (fake.text()) """ 这是价格方法阅读.发布对于经济地区开发相关你们合作. 一些更新个人学生重要.什么威望网络影响. 市场这些环境阅读那个类别.软件男人怎么等级状态日本您的. 您的阅读地方论坛.广告帮助位置企业.以下应用运行主要当前只是. 简介只要来自如果科技.那么文化进入公司电话. 名称威望游戏报告最新日期论坛.最大为了如何提高大学.还是文件因为喜欢语言.的是以及资料是否现在两个. """ # 9. 随机生成词语 print (fake.word()) # 过程 # 10. 随机生成多个词语,用法与段落,句子,类似 print (fake.words()) # ['任何', '参加', '正在'] # 11. 随机生成二进制编码 print (fake.binary()) # 非常长, 不打印了 # 12. 随机生成两位语言编码 print (fake.language_code()) # ks # 13. 随机生成语言/国际 信息 print (fake.locale()) # shs_CA # 14. 随机生成MD5 print (fake.md5()) # 0df0396328281f32b1922cd82016580d # 15. 随机生成密码,可选参数: # length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母 print (fake.password()) # C^!5fIk!s8 # 16. 随机SHA1 print (fake.sha1()) # e7d9fa4f3e9a25e5ab44d88971e4c56ef4cc446f # 17. 随机SHA256 print (fake.sha256()) # 47f9163f2a72edc855ef25289c2cfcd4c213842607b4b936c12a43b477c8ed77 # 18. 随机UUID print (fake.uuid4()) # 45dc0754-b3e3-4c94-bdcb-d20a3a8f4d9d |
时间信息类
意义也不大,有兴趣可以自己了解一下。
小结
个人觉得,faker这个库最有用的就是生成名字和地址了,其实虽然可以生成很多信息,但是常用的只有几个,需要使用的时候直接查就可以了。
以上就是python用faker库批量生成假数据的详细内容,更多关于python faker库生成假数据的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/traditional/p/13384762.html