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)