pyhton2 and python3 生成隨機數字、字母、符號字典(用於撞庫測試/驗證碼等)

本文介紹Python3中String模塊ascii_letters和digits方法,其中ascii_letters是生成全部字母,從a-z和A-Z,digits是生成全部數字0-9.string.punctuation是全部標點'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'python

String模塊中的常量:git

string.digits:數字0~9app

string.ascii_letters:全部字母(大小寫)dom

string.lowercase:全部小寫字母async

string.printable:可打印字符的字符串函數

string.punctuation:全部標點spa

string.uppercase:全部大寫字母線程


>>> import string
>>> string.digits
'0123456789'
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
#!/usr/bin/env python
# encoding: utf-8
#@author: jack
#@contact: 935650354@qq.com
#@site: https://www.cnblogs.com/jackzz
#@software: PyCharm


import threading
import queue
import random, string

class ThreadPool:
def __init__(self, n):
"""
構造一個指定數量線程的線程池.
:param n: 線程數量
"""
self.queue_obj = queue.Queue()
for i in range(n):
# 開啓池中的線程對象
threading.Thread(target=self.worker, daemon=True).start()

def worker(self):
"""
線程對象, 寫while True是爲了可以一直去執行任務.
:return: None
"""
while True:
func = self.queue_obj.get()
func()
self.queue_obj.task_done()

def apply_async(self, func):
"""
向隊列中傳入的須要執行的函數對象.
:param func: 函數對象
:return: None
"""
self.queue_obj.put(func)

def join(self):
"""
等待隊列中的內容被取完.
:return: None
"""
self.queue_obj.join()


def rand_str(num, length=8):
with open('pwd_dir.txt', 'w') as f:
for i in range(num):
chars = string.ascii_letters+string.digits+string.punctuation
s = [random.choice(chars) for i in range(length)]
s=set(s)
f.write('{0}\n'.format(''.join(s)))
f.close()


if __name__ == '__main__':
P = ThreadPool(100)#不怕內存溢出的小夥伴往大了設,通常100個知足平常所需了
P.apply_async(rand_str(200000000))#跑個2E個組合的字典
P.join()

 

python2 方法1、
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import string
#第一種方法
seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-"
sa = []
for i in range(8):
  sa.append(random.choice(seed))
salt = ''.join(sa)
print salt

方法2、code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import string

salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print salt
相關文章
相關標籤/搜索