在日常運維中,如果涉及到使用者管理,就一定會用到給使用者設定密碼的工作,其實吧,平時腦子裡覺得設定個密碼沒什麼,但要真讓你隨手敲乙個12位帶特殊字元的隨機密碼,也是很痛苦的事,如果讓你敲10個這樣的隨機密碼,我估計要人要瘋了,所以這事不適合人幹,但機器最做這個最拿手,今天我們就來學習一段python指令碼,可以直接生成自己需要的密碼,且密碼長度,數字,字元個數隨意你指定,廢話不多說了,我們直接看**:
#!/usr/bin/env python
import string
from itertools import chain
from random import choice, sample
def mkpasswd(length=12, digits=4, upper=3, lower=3):
lowercase = string.lowercase
uppercase = string.uppercase
salt = '!@#$%^&*()>'
password = list(
chain(
(choice(uppercase) for _ in range(upper)smkvx),
(choice(lowercase) for _ in range(lower)),
(choice(string.digits) for _ in range(digits)),
(choice(salt) for _ in range((length - digits - upper - lower)))))
return "".join(sample(password, len(password)))
if __name__ == '__main__':
print mkpasswd()
#!/usr/bin/env python
import string
from itertools import chain
from random import choice, sample
def mkpasswd(length=12, digits=4, upper=3, lower=3):
lowercase = string.lowercase
uppercase = string.uppercase
salt = '!@#$%^&*()>'
password = list(
chain(
(choice(uppercase) for _ in range(upper)),
(choice(lowercase) for _ in range(lower)),
(choice(string.digits) for _ in range(digits)),
(choice(salt) for _ in range((length - digits - upper - lower)))))
return smkvx"".join(sample(password, len(password)))
if __name__ == '__main__':
print mkpasswd()
指令碼逐行解釋,最開始幾行匯入了需要的模組,接下來定義乙個mkpasswd的函式,函式的引數可以設定密碼長度,數字、大寫和小寫字元的個數,接下來是函式主題部分:
利用string模組的屬性生成大小寫字串,salt是特殊字符集(支援自己新增),我們重點說password的生成,它首先是乙個列表,因為呼叫了list()工廠函式,chain()函式的功能是將一組迭代器物件連線起來,chain()裡有三個生成器表示式,每個表示式呼叫for迴圈,然後隨機選擇指定個數的字元,可能大家有看到for迴圈中有乙個_(下劃線),這個下劃線有什麼作用呢?我就不賣關子了,其實它啥作用也沒有,我自己理解為用不到程式設計客棧的變數,這種寫法大家以後也可以用,比如你在迴圈的時候用不到這個變數,就可用用_(下劃線)來表示。
函式最後是return連線後的字串,sample()函式是從隨機樣本中取出自己指定的樣本個數,需要兩個引數,乙個是樣本,乙個是取多少取的過程是隨機的,其實在這個指令碼中這個函式沒有發揮它完全的功能,因為生成的password就是12位的,然後在取出12位,不存在從大樣本中取出小樣本的工作,但起到了隨機的功能,所以生成的密碼是字元都是隨機的。
程式設計客棧關於python隨機生成帶特殊字元的密碼就給大家介紹到這裡,希望對大家有所幫助!
本文標題: python隨機生成帶特殊字元的密碼
本文位址:
Python 生成隨機字元
首先,引入random模組,從所列舉的字元中隨機選擇選擇乙個 char1 random.choice abcdefghijklmnopqrstuvwxyz 如果想選擇多個,可以使用random.sample從所列舉的字元中隨機挑選指令個數內容 list1 random.sample abcdefgh...
python生成隨機字串
encoding utf 8 import random import string 以追加方式開啟檔案,即保證後寫入的內容不會將之前的內容覆蓋 with open txt1.txt a as f 生產20000條字串 for i in range 20000 生成乙個隨機數 x random.ra...
Python隨機生成字串
背景 將不同型別的字串 大小寫字母 數字 特殊字元 中文 隨機放在一起,可以指定不同型別字串長度。如,全為大寫字母 15個數字 大小寫字母 數字 特殊字元 中文各1個 環境 windows7 python3.6.6 import string import random class randomst...