1. 程式人生 > 實用技巧 >Python faker生成測試資料

Python faker生成測試資料

我們在開發中常常需要利用一些假資料來做測試,這種時候就可以使用Faker來偽造資料從而用來測試.

Faker是一個可以讓你生成偽造資料的Python包。當你需要初始化資料庫,建立美觀的XML文件,不斷產生資料來進行壓力測試或者想從生產伺服器上拉取匿名資料的時候,Faker將是你最棒的選擇。

安裝

Faker庫已經被提交到pip,可以通過 pip 工具直接安裝。

1 # pip install Faker

使用

官方文件

faker 提供了一個工廠函式,用來建立資料。

1 2 >>>fromfakerimportFactory >>>fake1 = Factory.create()

當然,也提供一個Faker類來建立例項

1 2 3 4 5 6 7 8 9 >>>fromfakerimportFaker >>>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`,因此生成的姓名、地址等都是美國的。
要生成中文偽造資料,只需:

1 >>> 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 地址

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 >>>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 人物

1 2 3 4 5 6 7 8 9 10 11 12 13 14 >>>fake.name()# 姓名 '單玉珍' >>>fake.last_name()# 姓 '潘' >>>fake.first_name()# 名 '琴' >>>fake.name_male()# 男性姓名 '官平' >>>fake.last_name_male()# 男性姓 '安' >>>fake.first_name_male()# 男性名 '文' >>>fake.name_female()# 女性姓名 '許穎'

barcode 條碼

1 2 3 4 5 6 >>>fake.ean8()# 8位條碼 '12771363' >>>fake.ean13()# 13位條碼 '9133134950963' >>>fake.ean(length=8)# 自定義位數條碼,只能選8或者13 '20417161'

color 顏色

1 2 3 4 5 6 7 8 9 10 11 12 >>>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 公司

1 2 3 4 >>>fake.company()# 公司名 '時空盒數字科技有限公司' >>>fake.company_suffix()# 公司名字尾 '科技有限公司'

credit_card 銀行信用卡

1 2 3 4 5 6 7 8 9 10 >>>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 貨幣

1 2 >>>fake.currency_code()# 貨幣程式碼 'HNL'

date_time 時間日期

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 >>>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 檔案

1 2 3 4 5 6 7 8 >>>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 網際網路

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 >>>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()# 安全郵箱 '[email protected]' >>>fake.free_email()# 免費郵箱 '[email protected]' >>>fake.company_email()# 公司郵箱 '[email protected]' >>>fake.email()# 郵箱 '[email protected]'

job 工作

1 2 3 4 >>>fake.job()#工作職位 'Dealer' >>>fake.job() 'Musician'

lorem 亂數假文

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >>>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 雜項

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 >>>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 電話號碼

1 2 3 4 >>>fake.phone_number()# 手機號碼 '13334603608' >>>fake.phonenumber_prefix()# 運營商號段,手機號碼前三位 158

python python資料

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 >>>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,'[email protected]', datetime.datetime(2001,8,16,6,10,49),'xMMOjlETIgKGqVGTrChG','[email protected]'] >>>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),'[email protected]','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','選擇':'[email protected]','開發': datetime.datetime(1972,10,20,14,14,9),'電影':'KYmolBhkjSRxloXXFUUT','文化':2681,'這裡':'[email protected]','不會':'ZPkwuxWsrJSHMNuFiWEx','社會':'CiujeaZMZSuyYwuKzEdN'} >>>fake.pyset(nb_elements=10, variable_nb_elements=True)# 隨機set {'[email protected]','http://fu.cn/list/home.htm','MlJluVirRkofBnKNtphM',296,'ghoUSHkuEGmCzlJFKyHZ', datetime.datetime(2008,4,4,2,55,4),'AgbynHjdvwYpUkbMsfqr',8751,9649,'[email protected]', 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),'[email protected]','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,'[email protected]'],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:'[email protected]',3: ['http://gu.com/about.php','DhzpWYkgLCobGSHDLXzI',1420],4: {2: datetime.datetime(1986,2,22,4,50,12),3:'rRHwQQzkpAMBQxwVITBa',4: [datetime.datetime(1984,2,6,11,52,18),-73821572962388.7]}},'全部': {3:'uMQeeBXYNGhrHnAerdjp',4: [323329.56403,'kFvqXFhhtQPNtrOjKtxa','http://peng.cn/'],5: {3:'lcaoeisYIAOsuRjbOXia',4: Decimal('-902407032449085.0'),5: [2296,'uyuWgnsONzLluXqXdASM']}},'大小': {4:'[email protected]',5: [datetime.datetime(1991,10,22,19,21,48),'cDYEScdIokWuvGhRkWqs','XeDJojWyywFvzmWYaokO'],6: {4: Decimal('-4167029.2915827'),5:4030,6: [6372,'xfRXXEFGsNQpeIGmbaHU']}},'語言': {5:'https://www.guo.cn/',6: [6498, datetime.datetime(1981,12,3,18,4,29),42598100345.61],7: {5:'http://zheng.cn/',6:-229316.268238,7: ['https://www.qiao.cn/home/','GtaEXeVxjRnnkggjEguv']}},'表示': {6:'xcBvcGUWxdMhDqgzmhSd',7: ['kwDaFhyTKqHajGSaNOMf',8561,5456],8: {6:'https://zhou.cn/tags/tag/faq.html',7:'IGayAZtTQVlSOasQwgug',8: ['iCjwBzHfmPSLqAgmIOle',70511766106574.5]}},'電子': {7:'http://www.lu.org/tags/posts/terms/',8: [datetime.datetime(1978,8,11,12,16,35),'https://song.cn/main/categories/homepage.html','https://long.com/register.html'],9: {7:'nFJNhyMYBvfTxrYwYPUQ',8:-2252757903.0,9: ['GuJnhMEgXoMAivrgGZie', datetime.datetime(2014,5,29,1,17,50)]}},'的人': {8:'WgHePwYSPgSiPllXpLlJ',9: [1782,'fSepbXwpvhiBphzDTDNC',-9117731.63459416],10: {8:5602,9:3664,10: ['http://www.mao.com/search/tag/main/', Decimal('5579.7377')]}},'不過': {9:'rOfkDPTHvzKbfvQHbPNm',10: [314.397,'StqeLyXkIDKHfExSjggk','[email protected]'],11: {9:'BLKNdcccamYzBwRcMxlx',10:'[email protected]',11: ['ZocoQHdbhaNloWALnzwt','eWVvvHurAlZZRxlYHZXi']}}})

profile 人物描述資訊

1 2 3 4 5 6 7 8 9 10 11 12 >>>fake.profile(fields=None, sex=None)# 人物描述資訊:姓名、性別、地址、公司等 {'job':'Licensed conveyancer','company':'萬迅電腦資訊有限公司','ssn':'370684199902182726','residence':'福建省小紅市南長廣州街K座 406448','current_location': (Decimal('18.050895'), Decimal('-0.877117')),'blood_group':'0-','website': ['https://www.yi.org/','https://www.hu.com/','https://www.yin.cn/'],'username':'minghuang','name':'後英','sex':'F','address':'安徽省秀榮市璧山嘉禾路T座 954960','mail':'[email protected]','birthdate':'1975-03-09'} >>>s = fake.simple_profile(sex="m")# 人物精簡資訊 >>>fori,vins.items(): ...print(i,v) ... username chao85 name 邴宇 sex M address 陝西省東市朝陽廖街Y座757661 mail [email protected] birthdate1996-09-20

ssn 社會安全碼(身份證)

1 2 3 4 >>>fake.ssn()# 隨機生成身份證號(18位) '140100196612297997' >>>len(fake.ssn()) 18

user_agent 使用者代理

常用在偽造瀏覽器資訊

1 2 >>>fake.user_agent()# 偽造UA 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5361 (KHTML, like Gecko) Chrome/15.0.812.0 Safari/5361'

平臺資訊偽造

1 2 3 4 5 6 7 8 9 10 >>>fake.linux_platform_token() 'X11; Linux i686' >>>fake.linux_processor() 'i686' >>>fake.windows_platform_token() 'Windows CE' >>>fake.mac_platform_token() 'Macintosh; Intel Mac OS X 10_7_4' >>>fake.mac_processor() 'PPC'

瀏覽器偽造

1 2 3 4 5 6 7 8 9 10 >>>fake.internet_explorer()# IE瀏覽器 'Mozilla/5.0 (compatible; MSIE 5.0; Windows NT 6.1; Trident/4.0)' >>>fake.opera()# opera瀏覽器 'Opera/9.37.(Windows 95; doi-IN) Presto/2.9.178 Version/10.00' >>>fake.firefox()# firefox瀏覽器 'Mozilla/5.0 (Windows NT 5.0; te-IN; rv:1.9.2.20) Gecko/2015-09-28 13:29:05 Firefox/12.0' >>>fake.safari()# safari瀏覽器 'Mozilla/5.0 (Windows; U; Windows NT 4.0) AppleWebKit/533.37.4 (KHTML, like Gecko) Version/5.0 Safari/533.37.4' >>>fake.chrome()# chrome瀏覽器 'Mozilla/5.0 (Windows 98; Win 9x 4.90) AppleWebKit/5361 (KHTML, like Gecko) Chrome/14.0.866.0 Safari/5361'

自定義擴充套件

Faker 已經提供了足夠豐富的資訊生成,包括名字、手機號、郵箱地址、郵編等等。儘管如此,可能還是沒有辦法滿足你的需求。這時,可以利用自定義擴充套件,引用外部的 provider,自定義你要的功能。

Faker 物件可以通過add_provider方法將自定義的 Provider 新增到物件中,自定義的 Provider 需要繼承自 BaseProvider。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fromfakerimportFaker fake = Faker() # first, import a similar Provider or use the default one fromfaker.providersimportBaseProvider # create new provider class classMyProvider(BaseProvider): deffoo(self): return'bar' # then add new provider to faker instance fake.add_provider(MyProvider) # now you can use: print(fake.foo())

結果顯示:

1 bar

隨機控制

Faker隨機生成由random.Random驅動。其中,.random屬性返回random.Random物件。通過對該物件的操作,可以實現自定義的行為。

1 2 3 4 fromfakerimportFaker fake = Faker() fake.random fake.random.getstate()

那麼,可以實現什麼自定義呢?舉個例子,我們可以設定seed,通過給定的seed可以控制每次生成的內容都是一樣的。

1 2 3 4 5 6 7 8 9 10 11 12 >>>fromfakerimportFaker >>>fake = Faker() >>>fake.random.seed(4321) >>>fake.name() 'Ryan Gallagher' >>>fake.address() '7631 Johnson Village Suite 690\nAdamsbury, NC 50008' >>>fake.random.seed(4321) >>>fake.name() 'Ryan Gallagher' >>>fake.address() '7631 Johnson Village Suite 690\nAdamsbury, NC 50008'

不同的兩次執行,只要seed一樣,生成出來的資訊就是一樣的。

注意:fake.random.seed(4321)可以寫成fake.seed(4321)

命令列生成

有時想在shell或者其他程式中生成一些偽資料,是不是一定要寫一個Python指令碼呢?別急——Faker提供了一個命令列工具,估計可以應對大部分場景了:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 $ faker address 968 Bahringer Garden Apt. 722Kristinaland, NJ 09890 $ python3 -m faker address 432 Marvin Wells Apt. 593\nWest Eric, DC 45650-8420 $ faker -l de_DE address Samira-Niemeier-Allee 5694812 Biedenkopf $ faker profile {'job':'Designer, blown glass/stained glass','company':'Dennis-Bowers','ssn':'034-28-9965','residence':'34796 Jeremiah Station Apt. 782\nWest Timothy, TX 24139-6974','current_location': (Decimal('-47.425017'), Decimal('-42.743615')),'blood_group':'0+','website': ['https://www.gardner.biz/','http://glover-ellison.info/','http://www.harrison.biz/'],'username':'patrick33','name':'Alexandra Montgomery','sex':'F','address':'2314 Collier Stream Suite 093\nMcintyreside, UT 19553','mail':'[email protected]','birthdate':'2005-01-30'} $ faker profile ssn,name {'ssn':'344-68-7420','name':'Veronica Brennan'} $ faker -r=3 -s=";"name Willam Kertzmann; Josiah Maggio; Gayla Schmitt;

faker 命令幫助:

1 2 3 4 5 faker [-h] [--version] [-o output] [-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}] [-r REPEAT] [-s SEP] [-i {module.containing.custom_provider othermodule.containing.custom_provider}] [fake] [fake argument [fake argument ...]]

選項說明:

    • faker: 在shell中,faker命令也可以用python -m faker來代替
    • -h--help: 幫助資訊
    • --version:顯示版本
    • -o FILENAM:輸出結果到檔案中
    • -l {bg_BG,cs_CZ,...,zh_CN,zh_TW}:指定本地化,zh_CN表示中文
    • -r REPEAT:指定生成多少條相同型別的資料
    • -s SEP:在每個輸出後邊新增指定的分隔符
    • -i {my.custom_provider other.custom_provider}:自定義擴充套件,prividers列表。注意,這裡要指定包含你provider類的模組的路徑,而不是程式本身。
    • fake:指定方法名稱,如:name,address,text
    • [fake argument ...]:為方法指定引數。如上例,為profile方法指定ssnname引數,只輸出這兩個型別的內容。