import random, string #第一種方法(推薦) def random_str(slen=10): seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-" sa = [] for i in range(slen): sa.append(random.choice(seed)) return ''.join(sa) #random_str(8)運行結果:l7VSbNEG #第二種方法,random.sample可以從指定的序列中,隨機的截取指定長度的片斷,不作原地修改 def random_string(slen=10):#截取長度不能超過指定序列的長度 return ''.join(random.sample(string.ascii_letters + string.digits + '!@#$%^&*()_+=-', slen)) #random_string(8)運行結果:VOuCtHZs
不想在文件里有太多函數,改進一下:
import random def random_str(digits=True, lowercase=True, uppercase=True, symbol=True, slen=10): seed = '' seed = seed + '1234567890' if digits else seed+'' seed = seed + 'abcdefghijklmnopqrstuvwxyz' if lowercase else seed + '' seed = seed + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' if uppercase else seed + '' seed = seed + '!@#$%^&*()_+=-' if symbol else seed + '' if len(seed)==0: return None sa = [] for i in range(slen): sa.append(random.choice(seed)) return ''.join(sa)