參考: https://www.jianshu.com/p/20e41fc65dc8?tdsourcetag=s_pcqq_aiomsg
安裝Faker庫
pip install Faker
官網
https://faker.readthedocs.io/en/master/
例子:
>>> from faker import Faker >>> fake2 = Faker() >>> >>> fake2.name() 'Audrey Robinson' >>> fake2.address() '4266 Fritz Shore\nLewischester, AL 24594-7593' >>> fake2.text() 'Odio porro unde sint aliquid beatae. Ex officiis porro nostrum laboriosam deleniti nisi. A aut molestiae ratione ipsam perspiciatis facere.\nDicta incidunt at deleniti recusandae accusamus quisquam.'
每次調用方法 fake.name()
都會產生不同的(隨機)結果。這是因為 faker 向 faker.Generator.method_name()
調用了 faker.Generator.format(method_name)
。
本地化(讓他出現中文)
在用 Faker()
創建 faker 實例時,可以為實例指定本地化區域參數,默認為 'en_US`,因此生成的姓名、地址等都是美國的。
要生成中文偽造數據,只需:
>>> fake = Faker("zh_CN")
方法介紹
如上面例子,每次調用 fake 實例的 name()
方法時,都會產生不同隨機姓名。fake 實例還有很多方法可用,這些方法分為以下幾類:
- address 地址
- person 人物類:性別、姓名等
- barcode 條碼類
- color 顏色類
- company 公司類:公司名、公司email、公司名前綴等
- credit_card 銀行卡類:卡號、有效期、類型等
- currency 貨幣
- date_time 時間日期類:日期、年、月等
- file 文件類:文件名、文件類型、文件擴展名等
- internet 互聯網類
- job 工作
- lorem 亂數假文
- misc 雜項類
- phone_number 手機號碼類:手機號、運營商號段
- python python數據
- profile 人物描述信息:姓名、性別、地址、公司等
- ssn 社會安全碼(身份證號碼)
- user_agent 用戶代理
address 地址
>>> fake.country() # 國家 '奧地利' >>> fake.city() # 城市 '鄭州市' >>> fake.city_suffix() # 城市的后綴,中文是:市或縣 '市' >>> fake.address() # 地址 '河北省巢湖縣懷柔南寧路f座 169812' >>> fake.street_address() # 街道 '邯鄲路W座' >>> fake.street_name() # 街道名 '合肥路' >>> fake.postcode() # 郵編 '314548' >>> fake.latitude() # 維度 Decimal('68.0228435') >>> fake.longitude() # 經度 Decimal('155.964341')
person 人物
>>> fake.name() # 姓名 '單玉珍' >>> fake.last_name() # 姓 '潘' >>> fake.first_name() # 名 '琴' >>> fake.name_male() # 男性姓名 '官平' >>> fake.last_name_male() # 男性姓 '安' >>> fake.first_name_male() # 男性名 '文' >>> fake.name_female() # 女性姓名 '許穎'
barcode 條碼
>>> fake.ean8() # 8位條碼 '12771363' >>> fake.ean13() # 13位條碼 '9133134950963' >>> fake.ean(length=8) # 自定義位數條碼,只能選8或者13 '20417161'
color 顏色
>>> fake.hex_color() # 16進制表示的顏色 '#671f6d' >>> fake.rgb_css_color() # css用的rgb色 'rgb(237,74,237)' >>> fake.rgb_color() # 表示rgb色的字符串 '208,102,218' >>> fake.color_name() # 顏色名字 'Brown' >>> fake.safe_hex_color() #安全16進制色 '#ee4400' >>> fake.safe_color_name() # 安全顏色名字 'maroon'
company 公司
>>> fake.company() # 公司名 '時空盒數字科技有限公司' >>> fake.company_suffix() # 公司名后綴 '科技有限公司'
credit_card 銀行信用卡
>>> fake.credit_card_number(card_type=None) # 卡號 '375325478746231' >>> fake.credit_card_provider(card_type=None) # 卡的提供者 'VISA 13 digit' >>> fake.credit_card_security_code(card_type=None)# 卡的安全密碼 '450' >>> fake.credit_card_expire() # 卡的有效期 '04/22' >>> fake.credit_card_full(card_type=None) # 完整卡信息 'Maestro\n秀芳 商\n502001016117 04/27\nCVV: 144\n'
currency 貨幣
>>> fake.currency_code() # 貨幣代碼 'HNL'
date_time 時間日期
>>> fake.date_time(tzinfo=None) # 隨機日期時間 datetime.datetime(2001, 3, 18, 17, 57, 44) >>> fake.iso8601(tzinfo=None) # 以iso8601標准輸出的日期 '1973-11-16T22:58:37' >>> fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某個日期 datetime.datetime(2017, 11, 1, 14, 33, 48) >>> fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某個日期 datetime.datetime(2017, 3, 2, 13, 55, 31) >>> fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None) # 本年代內的一個日期 datetime.datetime(2010, 3, 26, 6, 33, 23) >>> fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None) # 本世紀一個日期 datetime.datetime(2015, 7, 21, 19, 27, 53) >>> fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None) # 兩個時間間的一個隨機時間 datetime.datetime(2005, 12, 3, 17, 17, 15) >>> fake.timezone() # 時區 'America/Guatemala' >>> fake.time(pattern="%H:%M:%S") # 時間(可自定義格式) '11:21:52' >>> fake.am_pm() # 隨機上午下午 'PM' >>> fake.month() # 隨機月份 '02' >>> fake.month_name() # 隨機月份名字 'August' >>> fake.year() # 隨機年 '1974' >>> fake.day_of_week() # 隨機星期幾 'Sunday' >>> fake.day_of_month() # 隨機月中某一天 '02' >>> fake.time_delta() # 隨機時間延遲 datetime.timedelta(13371, 27637) >>> fake.date_object() # 隨機日期對象 datetime.date(1983, 1, 26) >>> fake.time_object() # 隨機時間對象 datetime.time(17, 8, 56) >>> fake.unix_time() # 隨機unix時間(時間戳) 1223246848 >>> fake.date(pattern="%Y-%m-%d") # 隨機日期(可自定義格式) '1984-04-20' >>> fake.date_time_ad(tzinfo=None) # 公元后隨機日期 datetime.datetime(341, 9, 11, 8, 6, 9)
file 文件
>>> fake.file_name(category="image", extension="png") # 文件名(指定文件類型和后綴名) '增加.png' >>> fake.file_name() # 隨機生成各類型文件 '提供.pdf' >>> fake.file_extension(category=None) # 文件后綴 'txt' >>> fake.mime_type(category=None) # mime-type 'image/png'
internet 互聯網
>>> fake.ipv4(network=False) # ipv4地址 '104.225.105.10' >>> fake.ipv6(network=False) # ipv6地址 'dea6:ca11:39d0:b49f:fff1:82f1:bf88:698b' >>> fake.uri_path(deep=None) # uri路徑 'search/categories' >>> fake.uri_extension() # uri擴展名 '.htm' >>> fake.uri() # uri 'https://www.wei.com/terms/' >>> fake.url() # url 'http://zheng.org/' >>> fake.image_url(width=None, height=None) # 圖片url 'https://www.lorempixel.com/700/990' >>> fake.domain_word() # 域名主體 'hu' >>> fake.domain_name() # 域名 'hu.cn' >>> fake.tld() # 域名后綴 'com' >>> fake.user_name() # 用戶名 'xia13' >>> fake.user_agent() # UA 'Opera/8.33.(Windows NT 5.1; an-ES) Presto/2.9.171 Version/10.00' >>> fake.mac_address() # MAC地址 'd6:38:cc:2a:76:b2' >>> fake.safe_email() # 安全郵箱 'mingli@example.net' >>> fake.free_email() # 免費郵箱 'tao44@gmail.com' >>> fake.company_email() # 公司郵箱 'jingzhong@wang.cn' >>> fake.email() # 郵箱 'changjun@hao.com'
job 工作
>>> fake.job()#工作職位 'Dealer' >>> fake.job() 'Musician'
lorem 亂數假文
>>> fake.text(max_nb_chars=200) # 隨機生成一篇文章 '語言無法應用為什一點國內.要求完成如何世界電腦發布作品.經濟不同教育個人科技全國.\n在線學生發布信息上海狀態.\n聯系一次通過其實介紹世界.增加也是使用成功那個.\n商品免費管理公司.留言自己這種內容.\n次數內容知道這樣女人感覺.操作他的生產出現如何報告文章只有.\n個人文化中心不能發布最新.質量一下提高.感覺最大工具表示最后計划.這是還有次數結果其實特別.' >>> fake.word() # 隨機單詞 '能力' >>> fake.words(nb=3) # 隨機生成幾個字 ['國家', '經營', '結果'] >>> fake.sentence(nb_words=6, variable_nb_words=True) # 隨機生成一個句子 '重要更多我們作品地方增加.' >>> fake.sentences(nb=3) # 隨機生成幾個句子 ['制作上海學生.', '方式汽車一樣技術幫助歡迎.', '說明一種深圳經營電話帖子.'] >>> fake.paragraph(nb_sentences=3, variable_nb_sentences=True) # 隨機生成一段文字(字符串) '非常環境位置有限發展首頁行業.情況對於出現部門這種覺得.產品以后因為雖然由於日本不同.' >>> fake.paragraphs(nb=3) # 隨機生成成幾段文字(列表) ['就是發布要求有關這里國際.美國設備深圳經營.首頁也是支持報告.', '決定可是只有發現開始一直.最后有些項目正在深圳關系決定.下載注冊圖片更多進行他的那些.', '必須他們發生數據准備聯系.同時這樣內容學校精華.']
misc 雜項
>>> fake.binary(length=10) # 隨機二進制字符串(可指定長度) b'U\xa9@\x1e\x96\xe7\xca\x82\x14f' >>> fake.language_code() # 隨機語言代碼 'tg' >>> fake.md5(raw_output=False) # 隨機md5,16進制字符串 'cc4feebe419791332bbcff5e0fdf084a' >>> fake.sha1(raw_output=False) # 隨機sha1,16進制字符串 '8ac0e9980f880860b6e45ae6fd257cc847b7ae8d' >>> fake.sha256(raw_output=False) # 隨機sha256,16進制字符串 '033151f173f4a389e38e7df2363d89741f752c474e7bdfa2ee0a794bf0b505b5' >>> fake.boolean(chance_of_getting_true=50) # 隨機真假值(得到True的幾率是50%) False >>> fake.null_boolean() # 隨機真假值和null >>> fake.null_boolean() True >>> fake.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True) # 隨機密碼(可指定密碼策略) 'F%722TJg_U' >>> fake.locale() # 隨機本地代碼 'hy_AM' >>> fake.uuid4() # 隨機uuid 'a50d17e7-bc4f-37a3-27b3-04a24fdd0055' >>>
phone_number 電話號碼
>>> fake.phone_number() # 手機號碼 '13334603608' >>> fake.phonenumber_prefix() # 運營商號段,手機號碼前三位 158
python python數據
>>> fake.pyint() # 隨機int 7775 >>> fake.pyfloat(left_digits=None, right_digits=None, positive=False) # 浮點數 -84901.5586333 >>> fake.pydecimal(left_digits=None, right_digits=None, positive=False) # 隨機高精度數 Decimal('-12273687068527.0') >>> fake.pystr(min_chars=None, max_chars=20) # 隨機字符串(可指定長度) 'cblutNKFIyegfcHPrjzx' >>> fake.pybool() # 隨機bool值 True >>> fake.pyiterable(nb_elements=10, variable_nb_elements=True) # 隨機iterable ['ODfeVvcbAjPDBGwzljQw', 'https://www.tan.cn/list/category/homepage.php', 'YQlrsFkBieyKYaXlCljJ', Decimal('42778240911787.2'), Decimal('957411812.6383'), 'TGbqZufoiUXLQTZDrVcP', 'http://yan.com/posts/tags/search/terms.php', 3.680492634254, 'min57@hotmail.com', datetime.datetime(2001, 8, 16, 6, 10, 49), 'xMMOjlETIgKGqVGTrChG', 'yong83@xu.cn'] >>> fake.pylist(nb_elements=10, variable_nb_elements=True ) # 隨機生成一個list ['KXQMXAkcEMSLfnIZkgJb', 'BtowiRsuIqyyULnSYYdr', datetime.datetime(2011, 10, 10, 14, 44, 2), datetime.datetime(2008, 5, 10, 1, 38, 38), 'juan47@hotmail.com', 'QEsdUpEqHLpThyWCjkNx', Decimal('-801375867.9'), 'ucDyeZnHAXfZtkwdVUbR', 4707, datetime.datetime(1974, 8, 7, 1, 54, 29)] >>> fake.pydict(nb_elements=10, variable_nb_elements=True) # 隨機字典 {'其中': 9047, '一直': 'AUiUjuqccIdVAWSqzDbW', '選擇': 'ddong@hotmail.com', '開發': datetime.datetime(1972, 10, 20, 14, 14, 9), '電影': 'KYmolBhkjSRxloXXFUUT', '文化': 2681, '這里': 'uyang@yahoo.com', '不會': 'ZPkwuxWsrJSHMNuFiWEx', '社會': 'CiujeaZMZSuyYwuKzEdN'} >>> fake.pyset(nb_elements=10, variable_nb_elements=True) # 隨機set {'bhe@hotmail.com', 'http://fu.cn/list/home.htm', 'MlJluVirRkofBnKNtphM', 296, 'ghoUSHkuEGmCzlJFKyHZ', datetime.datetime(2008, 4, 4, 2, 55, 4), 'AgbynHjdvwYpUkbMsfqr', 8751, 9649, 'tangguiying@hotmail.com', Decimal('5727570036.91'), 'HmDkExndcQIOaTtsSpsc', 'hjQlLLXuHVVzENEwoHJK'} >>> fake.pytuple(nb_elements=10, variable_nb_elements=True) # 隨機tuple ('http://www.cai.com/index/', datetime.datetime(1973, 7, 28, 2, 12, 23), 'khltJQMYJvIDRMYodviZ', 'uJezUsEqiHaiFxwOPWvl', 'qojwZHyytBSQQavkDaTu', 'AHUCHYuVJTHnoSEuQDSY', 1012, 'uEYVuzeTlgVhrnCATfKw', 'https://www.zhou.com/categories/tags/main/', 'LbLSFZPeATtzHvbmYhGr') >>> fake.pystruct() # 隨機生成3個有10個元素的python數據結構 ([datetime.datetime(1996, 10, 26, 7, 35, 26), datetime.datetime(1998, 2, 28, 17, 20, 8), 'qianming@hotmail.com', 'yEWMrpTqtAHfbxqldGrb', 'YgKYOnrjuthOrOXhlYIl', datetime.datetime(1994, 12, 10, 0, 55, 30), Decimal('-6865068.3'), 'SYHFHiFvJlRVPcCKumUM', -8619.4354, 'kwGipwcASeALLeKdaWBi'], {'同時': 'BvtYdkNTHwZNMiIIRwKd', '空間': 310959668662.457, '特別': 'PZQDBuuQWkcdryMloyKS', '音樂': Decimal('-7219015925.0'), '項目': 'https://www.zhou.cn/main.php', '回復': 30.408750841, '顯示': 'etZMrsjXJgZpDfZWhpoS', '大小': 7472, '類型': 'OsjpxgLqnTcdVOlHoMoP', '什么': 'http://www.xia.com/posts/app/index/'}, {'朋友': {0: -415025.243093017, 1: [1799, 585, 'shu@hotmail.com'], 2: {0: 9980, 1: 'qnOnFTzGnsjvXGybBnMF', 2: ['http://zheng.cn/list/search/tag/faq.html', Decimal('964285276661463.0')]}}, '發生': {1: -5339010.6134, 2: [datetime.datetime(1987, 6, 23, 15, 21, 45), 'SvSpvKqTXlJvdQhHScwM', 'PZjKOYzZzoNVsHLRcARQ'], 3: {1: 'https://www.yan.cn/register/', 2: 2191, 3: ['HMHKQuLRBQaaAypRbtHU', datetime.datetime(2014, 5, 24, 3, 32, 36)]}}, '我的': {2: 'linxia@yahoo.com', 3: ['http://gu.com/about.php', 'DhzpWYkgLCobGSHDLXzI', 1420], 4: {2: datetime.datetime(1986, 2, 22, 4, 50, 12), 3: