Python Faker的使用(1):基礎(chǔ)使用方法與函數(shù)速查

????在軟件需求、開發(fā)、測試過程中蝇棉,有時(shí)候需要使用一些測試數(shù)據(jù)俐末,針對(duì)這種情況,我們一般要么使用已有的系統(tǒng)數(shù)據(jù)庄蹋,要么需要手動(dòng)制造一些數(shù)據(jù)返顺。

? ? 由于現(xiàn)在的業(yè)務(wù)系統(tǒng)數(shù)據(jù)多種多樣,千變?nèi)f化蔓肯。在手動(dòng)制造數(shù)據(jù)的過程中遂鹊,可能需要花費(fèi)大量精力和工作量,此項(xiàng)工作既繁復(fù)又容易出錯(cuò)蔗包,而且秉扑,部分?jǐn)?shù)據(jù)的手造工作無法保障:比如UUID類數(shù)據(jù)、MD5调限、SHA加密類數(shù)據(jù)等舟陆。

????現(xiàn)在好了,有一個(gè)Python包能夠協(xié)助你完成這方面的工作耻矮。

Faker首頁

1.什么是Faker

????Faker是一個(gè)Python包秦躯,開源的GITHUB項(xiàng)目,主要用來創(chuàng)建偽數(shù)據(jù)裆装,使用Faker包踱承,無需再手動(dòng)生成或者手寫隨機(jī)數(shù)來生成數(shù)據(jù),只需要調(diào)用Faker提供的方法哨免,即可完成數(shù)據(jù)的生成茎活。

????項(xiàng)目地址:https://github.com/joke2k/faker

2.安裝Faker

? ??方法一:

????????pip install faker

? ??方法二:

????????通過上方提供的github地址,來下載編譯安裝琢唾。

3.Faker的使用

3.1载荔、Faker命令

(該段落參考自:MA木易YA? 的相關(guān)簡書文章)

? ? 安裝好了之后,可以在CMD或者Shell中通過faker命令來調(diào)試采桃,具體如下:

? ??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 ...]]

參數(shù)說明:

? ? ? ? ?faker:是安裝在您的環(huán)境時(shí)懒熙,腳本丘损,在發(fā)展中可以使用,而不是python? -m faker

? ??????-h工扎,--help:顯示幫助消息

? ??????--version:顯示程序的版本號(hào)

? ??????-o FILENAME:重定向輸出到指定的文件名

? ??????-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}:允許使用本地化的供應(yīng)商

????? ??-r REPEAT:將生成的輸出的特定數(shù)量的

? ??????-s SEP:將生成的每個(gè)產(chǎn)生的輸出后的指定的分隔

? ??????-i {my.custom_provider other.custom_provider}:使用其他自定義供應(yīng)商名單号俐。請(qǐng)注意,是包含您提供一流的定庵,而不是定制的Provider類本身包的導(dǎo)入路徑吏饿。

? ??????fake:是產(chǎn)生一個(gè)輸出,該假的名稱蔬浙,如 name猪落,address或text

? ??????[fake argument ...]:可選參數(shù)傳遞到假(例如,簡檔假取的逗號(hào)分隔的字段名作為第一個(gè)參數(shù)的可選列表)

faker命令

3.2畴博、在Python中使用

????引用包:

????????from faker import Faker

????初始化:

????????f=Faker(locale='zh_CN')

????關(guān)于初始化參數(shù)locale:為生成數(shù)據(jù)的文化選項(xiàng)笨忌,默認(rèn)為en_US,只有使用了相關(guān)文化俱病,才能生成相對(duì)應(yīng)的隨機(jī)信息(比如:名字官疲,地址,郵編亮隙,城市途凫,省份等)

可選擇的文化信息:

ar_EG?- Arabic (Egypt)? ? ? ? 阿拉伯語 - 埃及

ar_PS?- Arabic (Palestine)????阿拉伯語 - 巴勒斯坦

ar_SA?- Arabic (Saudi Arabia)????阿拉伯語 - 沙特阿拉伯

bg_BG?- Bulgarian? ? ? ? 保加利亞語 - 保加利亞

cs_CZ?- Czech? ? ? ? ? ? ? ?捷克語 - 捷克

de_DE?- German? ? ? ? ? ? 德語 - 德國

dk_DK?- Danish? ? ? ? ? ? 丹麥語 - 丹麥

el_GR?- Greek? ? ? ? ? ? 希臘語 - 希臘

en_AU?- English (Australia)? ? 英語 - 澳大利亞

en_CA?- English (Canada)? ? 英語 -? 加拿大

en_GB?- English (Great Britain)? ? 英語 - 英國

en_US?- English (United States)? ?英語 -? 美國

es_ES?- Spanish (Spain)? ? ? ? 西班牙語 - 西班牙

es_MX?- Spanish (Mexico)? ? ? ? 西班牙語- 墨西哥

et_EE?- Estonian? ? ? ? ? ? 愛沙尼亞語 - 愛沙尼亞

fa_IR?- Persian (Iran)? ? ? ? 波斯語 - 伊朗

fi_FI?- Finnish? ? ? ? 芬蘭語 - 芬蘭

fr_FR?- French? ? ? ? ?法語 - 法國

hi_IN?- Hindi? ? ? ? ? ? 印地語 - 印度

hr_HR?- Croatian? ? 克羅地亞語 - 克羅地亞

hu_HU?- Hungarian? ? 匈牙利語 - 匈牙利

hy_AM?- Armenian 亞美尼亞語 - 亞美尼亞

it_IT?- Italian? ? ? ?意大利語 -? 意大利

ja_JP?- Japanese? ? 日語 - 日本

ko_KR?- Korean? ? 朝鮮語 - 韓國

ka_GE?- Georgian (Georgia)? 格魯吉亞語 - 格魯吉亞

lt_LT?- Lithuanian? ? 立陶宛語 - 立陶宛

lv_LV?- Latvian????拉脫維亞語 - 拉脫維亞

ne_NP?- Nepali????尼泊爾語 - 尼泊爾

nl_NL?- Dutch (Netherlands)? ? 德語 - 荷蘭

no_NO?- Norwegian? ? 挪威語 - 挪威

pl_PL?- Polish? ? 波蘭語 - 波蘭

pt_BR?- Portuguese (Brazil)? ? 葡萄牙語? - 巴西

pt_PT?- Portuguese (Portugal)? ? 葡萄牙語 - 葡萄牙

ru_RU?- Russian? ? 俄語 - 俄國

sl_SI?- Slovene? ?斯諾文尼亞語 - 斯諾文尼亞

sv_SE?- Swedish? ? 瑞典語 - 瑞典?

tr_TR?- Turkish? ? ? ? ?土耳其語 - 土耳其

uk_UA?- Ukrainian? ? 烏克蘭語 - 烏克蘭

zh_CN?- Chinese (China)? ? (簡體中文)

zh_TW?- Chinese (Taiwan)? (繁體中文)

然后即可使用系統(tǒng)提供的方法:

f.name()? #生成姓名

f.address() #生成地址

一段簡單的測試代碼

4.常用方法一覽

? ??以下內(nèi)容以ZH-CN和ZH-TW包為準(zhǔn)

4.1.地理信息類

city_suffix():市,縣

country():國家

country_code():國家編碼

district():區(qū)

geo_coordinate():地理坐標(biāo)

latitude():地理坐標(biāo)(緯度)

longitude():地理坐標(biāo)(經(jīng)度)

postcode():郵編

province():省份 (zh_TW沒有此方法)

address():詳細(xì)地址

street_address():街道地址

street_name():街道名

street_suffix():街溢吻、路

4.2维费、基礎(chǔ)信息類

ssn():生成身份證號(hào)

bs():隨機(jī)公司服務(wù)名

company():隨機(jī)公司名(長)

company_prefix():隨機(jī)公司名(短)

company_suffix():公司性質(zhì)

credit_card_expire():隨機(jī)信用卡到期日

credit_card_full():生成完整信用卡信息

credit_card_number():信用卡號(hào)

credit_card_provider():信用卡類型

credit_card_security_code():信用卡安全碼

job():隨機(jī)職位

first_name()

first_name_female():女性名

first_name_male():男性名

first_romanized_name():羅馬名

last_name()

last_name_female():女姓

last_name_male():男姓

last_romanized_name()

name():隨機(jī)生成全名

name_female():男性全名

name_male():女性全名

romanized_name():羅馬名

msisdn():移動(dòng)臺(tái)國際用戶識(shí)別碼,即移動(dòng)用戶的ISDN號(hào)碼

phone_number():隨機(jī)生成手機(jī)號(hào)

phonenumber_prefix():隨機(jī)生成手機(jī)號(hào)段

4.3促王、計(jì)算機(jī)基礎(chǔ)犀盟、Internet信息類

? ??4.3.1、個(gè)人賬戶信息類

ascii_company_email():隨機(jī)ASCII公司郵箱名

ascii_email():隨機(jī)ASCII郵箱

ascii_free_email()

ascii_safe_email()

company_email()

email()

free_email()

free_email_domain()

safe_email():安全郵箱

? ??4.3.2蝇狼、網(wǎng)絡(luò)基礎(chǔ)信息類

domain_name():生成域名

domain_word():域詞(即阅畴,不包含后綴)

ipv4():隨機(jī)IP4地址

ipv6():隨機(jī)IP6地址

mac_address():隨機(jī)MAC地址

tld():網(wǎng)址域名后綴(.com,.net.cn,等等,不包括.)

uri():隨機(jī)URI地址

uri_extension():網(wǎng)址文件后綴

uri_page():網(wǎng)址文件(不包含后綴)

uri_path():網(wǎng)址文件路徑(不包含文件名)

url():隨機(jī)URL地址

user_name():隨機(jī)用戶名

image_url():隨機(jī)URL地址


? ??4.3.3迅耘、瀏覽器信息類

chrome():隨機(jī)生成Chrome的瀏覽器user_agent信息

firefox():隨機(jī)生成FireFox的瀏覽器user_agent信息

internet_explorer():隨機(jī)生成IE的瀏覽器user_agent信息

opera():隨機(jī)生成Opera的瀏覽器user_agent信息

safari():隨機(jī)生成Safari的瀏覽器user_agent信息

linux_platform_token():隨機(jī)Linux信息

user_agent():隨機(jī)user_agent信息

隨機(jī)生成的user_agent

? ??4.3.4贱枣、文件信息類

file_extension():隨機(jī)文件擴(kuò)展名

file_name():隨機(jī)文件名(包含擴(kuò)展名,不包含路徑)

file_path():隨機(jī)文件路徑(包含文件名豹障,擴(kuò)展名)

mime_type():隨機(jī)mime Type

4.4冯事、數(shù)字類

numerify():三位隨機(jī)數(shù)字

random_digit():0~9隨機(jī)數(shù)

random_digit_not_null():1~9的隨機(jī)數(shù)

random_int():隨機(jī)數(shù)字,默認(rèn)0~9999血公,可以通過設(shè)置min,max來設(shè)置

random_number():隨機(jī)數(shù)字,參數(shù)digits設(shè)置生成的數(shù)字位數(shù)

pyfloat():left_digits=5 #生成的整數(shù)位數(shù),

? ? ? ? ? ? ? ? ? right_digits=2 #生成的小數(shù)位數(shù),

? ? ? ? ? ? ? ? ? positive=True #是否只有正數(shù)

pyint():隨機(jī)Int數(shù)字(參考random_int()參數(shù))

pydecimal():隨機(jī)Decimal數(shù)字(參考pyfloat參數(shù))


4.5.文本缓熟、加密類

pystr():隨機(jī)字符串

random_element():隨機(jī)字母

random_letter():隨機(jī)字母

paragraph():隨機(jī)生成一個(gè)段落

paragraphs():隨機(jī)生成多個(gè)段落累魔,通過參數(shù)nb來控制段落數(shù)摔笤,返回?cái)?shù)組

sentence():隨機(jī)生成一句話

sentences():隨機(jī)生成多句話,與段落類似

text():隨機(jī)生成一篇文章(不要幻想著人工智能了垦写,至今沒完全看懂一句話是什么意思)

word():隨機(jī)生成詞語

words():隨機(jī)生成多個(gè)詞語吕世,用法與段落,句子梯投,類似

binary():隨機(jī)生成二進(jìn)制編碼

boolean():True/False

language_code():隨機(jī)生成兩位語言編碼

locale():隨機(jī)生成語言/國際 信息

md5():隨機(jī)生成MD5

null_boolean():NULL/True/False

password():隨機(jī)生成密碼,可選參數(shù):length:密碼長度命辖;special_chars:是否能使用特殊字符;digits:是否包含數(shù)字分蓖;upper_case:是否包含大寫字母尔艇;lower_case:是否包含小寫字母

sha1():隨機(jī)SHA1

sha256():隨機(jī)SHA256

uuid4():隨機(jī)UUID


4.6.時(shí)間信息類

am_pm():AM/PM

century():隨機(jī)世紀(jì)

date():隨機(jī)日期

date_between():隨機(jī)生成指定范圍內(nèi)日期,參數(shù):start_date么鹤,end_date取值:具體日期或者today,-30d,-30y類似

date_between_dates():隨機(jī)生成指定范圍內(nèi)日期终娃,用法同上

date_object():隨機(jī)生產(chǎn)從1970-1-1到指定日期的隨機(jī)日期。

date_this_month()

date_this_year()

date_time():隨機(jī)生成指定時(shí)間(1970年1月1日至今)

date_time_ad():生成公元1年到現(xiàn)在的隨機(jī)時(shí)間

date_time_between():用法同dates

future_date():未來日期

future_datetime():未來時(shí)間

month():隨機(jī)月份

month_name():隨機(jī)月份(英文)

past_date():隨機(jī)生成已經(jīng)過去的日期

past_datetime():隨機(jī)生成已經(jīng)過去的時(shí)間

time():隨機(jī)24小時(shí)時(shí)間

timedelta():隨機(jī)獲取時(shí)間差

time_object():隨機(jī)24小時(shí)時(shí)間蒸甜,time對(duì)象

time_series():隨機(jī)TimeSeries對(duì)象

timezone():隨機(jī)時(shí)區(qū)

unix_time():隨機(jī)Unix時(shí)間

year():隨機(jī)年份

4.7棠耕、集合信息類

profile():隨機(jī)生成檔案信息

simple_profile():隨機(jī)生成簡單檔案信息

檔案信息和簡檔信息


#以下方法皆為隨機(jī)集合類型

pyiterable()

pylist()

pyset()

pystruct()

pytuple()

pydict()


4.8、其他類別

currency_code():貨幣編碼

color_name():隨機(jī)顏色名

hex_color():隨機(jī)HEX顏色

rgb_color():隨機(jī)RGB顏色

safe_color_name():隨機(jī)安全色名

safe_hex_color():隨機(jī)安全HEX顏色

isbn10():隨機(jī)ISBN(10位)

isbn13():隨機(jī)ISBN(13位)

lexify():替換所有問號(hào)(“柠新?”)帶有隨機(jī)字母的事件窍荧。


5.使用中遇到的問題

? ?元旦前發(fā)布的這篇文章,由于工作需要恨憎,元旦期間創(chuàng)建偽數(shù)據(jù)的過程中搅荞,發(fā)現(xiàn)一個(gè)很有意思的問題。不同的文化類之間框咙,方法是偶然有區(qū)別的咕痛。

? ?比如,在中文(zh_CN)中的方法喇嘱,district()#獲取區(qū)? ?province()#獲取省的方法茉贡,在有些包里是沒有的,這需要根據(jù)所使用文化類的國家特制來者铜。

日文包沒有province方法

? 比如腔丧,中國的一級(jí)行政單位,是省作烟,直轄市愉粤,自治區(qū);而日本的一級(jí)行政單位拿撩,是都衣厘、道、府、縣影暴。所以错邦,日文包(ja_JP)中,就沒有相應(yīng)的province(),district(),取而代之的是prefecture(),town()型宙;在美國撬呢,一級(jí)行政單位又是洲,所以妆兑,在美國英語包(en_US)中魂拦,取而代之的是state();

? ?總之搁嗓,在使用不同F(xiàn)ake類之前芯勘,最好對(duì)所生成文化的國家、地區(qū)信息做初步的了解谱姓,建議先瀏覽其對(duì)應(yīng)的類文件的成員借尿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屉来,隨后出現(xiàn)的幾起案子路翻,更是在濱河造成了極大的恐慌,老刑警劉巖茄靠,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茂契,死亡現(xiàn)場離奇詭異,居然都是意外死亡慨绳,警方通過查閱死者的電腦和手機(jī)掉冶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脐雪,“玉大人厌小,你說我怎么就攤上這事≌角铮” “怎么了璧亚?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長脂信。 經(jīng)常有香客問我癣蟋,道長,這世上最難降的妖魔是什么狰闪? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任疯搅,我火速辦了婚禮,結(jié)果婚禮上埋泵,老公的妹妹穿的比我還像新娘幔欧。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布琐馆。 她就那樣靜靜地躺著规阀,像睡著了一般恒序。 火紅的嫁衣襯著肌膚如雪瘦麸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天歧胁,我揣著相機(jī)與錄音滋饲,去河邊找鬼。 笑死喊巍,一個(gè)胖子當(dāng)著我的面吹牛屠缭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崭参,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼呵曹,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了何暮?” 一聲冷哼從身側(cè)響起奄喂,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎海洼,沒想到半個(gè)月后跨新,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坏逢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年域帐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片是整。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肖揣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浮入,到底是詐尸還是另有隱情龙优,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布舵盈,位于F島的核電站陋率,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秽晚。R本人自食惡果不足惜瓦糟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赴蝇。 院中可真熱鬧菩浙,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至先嬉,卻和暖如春轧苫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疫蔓。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工含懊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衅胀。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓岔乔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滚躯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雏门,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)掸掏,斷路器茁影,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 我們?cè)陂_發(fā)中常常需要利用一些假數(shù)據(jù)來做測試,這種時(shí)候就可以使用 Faker 來偽造數(shù)據(jù)從而用來測試. Faker ...
    hjqjk閱讀 19,454評(píng)論 1 18
  • 常用方法 name() 生成隨機(jī)名字 random_int() 整數(shù)random_digit() 0-9 的隨機(jī)數(shù)...
    Zeno00閱讀 1,827評(píng)論 0 1
  • https://github.com/fzaninotto/FakerSkip to contentThis re...
    地獄咆哮Zzzzz閱讀 6,320評(píng)論 1 0
  • 小時(shí)候,如果擁有一件毛衣阅束,就是擁有一件奢侈品呼胚,一定是如獲至寶,幸喜萬分息裸。從小我就想蝇更,哪一天我也會(huì)有自己的毛衣。并且...
    李小宛閱讀 665評(píng)論 7 6