如何快速生成指定长度的随机码
昨天晚上开会聊天说起生成随机码来做打折卡,在线可查的那种. 脑海里就直接有个想法了。 字母数字各一半。
安装库
sudo apt update
sudo apt upgrade -y
sudo apt install virutalenv
sudo apt -y install vim vim-youcompleteme
创建虚拟环境并激活
virtualenv -p python3 venv
cd venv/
source bin/activate
安装库
pip install pandas openpyxl
编写代码
示例代码
import os
import binascii
import pandas as pd
def generate_random_code(length=12):
"""
生成指定长度的随机码
:param length: 随机码的长度
:return: 随机码字符串
"""
random_bytes = os.urandom(length // 2) # 生成一半字节长度的数据
random_code = binascii.hexlify(random_bytes).decode('utf-8') # 转换为十六进制字符串
return random_code[:length] # 确保长度为12位
def generate_dk_key():
"""
生成带有 "DK-Key-" 字头的随机码
:return: 带有字头的随机码
"""
random_code = generate_random_code()
dk_key = f"DK-Key-{random_code}"
return dk_key
def generate_keys(num_keys=30):
"""
生成指定数量的随机码
:param num_keys: 需要生成的随机码数量
:return: 包含随机码的列表
"""
keys = [generate_dk_key() for _ in range(num_keys)]
return keys
def save_to_excel(keys, filename="Donkey_Discount_Keys.xlsx"):
"""
将随机码保存到 Excel 文件
:param keys: 随机码列表
:param filename: 保存的文件名
"""
# 创建一个 DataFrame
df = pd.DataFrame(keys, columns=["Donkey Discount Key"])
# 保存到 Excel 文件
df.to_excel(filename, index=False)
print(f"Keys saved to {filename}")
# 主程序
if __name__ == "__main__":
# 生成 30 个随机码
keys = generate_keys(30)
# 保存到 Excel 文件
save_to_excel(keys)
详细讲解
1. 生成随机码
generate_random_code函数:- 使用
os.urandom生成随机字节。 - 将字节转换为十六进制字符串。
-
确保生成的随机码长度为 12 位。
-
generate_dk_key函数: - 在生成的随机码前面拼接
"DK-Key-"字头。
2. 生成多个随机码
generate_keys函数:- 使用列表推导式生成指定数量的随机码。
- 参数
num_keys指定需要生成的随机码数量,默认为 30。
3. 保存到 Excel 文件
save_to_excel函数:- 使用
pandas.DataFrame创建一个数据框,包含生成的随机码。 - 使用
to_excel方法将数据框保存到 Excel 文件。 - 参数
filename指定保存的文件名,默认为"Donkey_Discount_Keys.xlsx"。
4. 主程序
- 在主程序中:
- 调用
generate_keys函数生成 30 个随机码。 - 调用
save_to_excel函数将随机码保存到 Excel 文件。
运行结果
运行代码后,会在当前目录下生成一个名为 Donkey_Discount_Keys.xlsx 的 Excel 文件,文件中包含一个名为 "Donkey Discount Key" 的列,列中存储了 30 个随机码。
注意事项
- 依赖库:
-
确保安装了
pandas和openpyxl库,用于处理 Excel 文件。可以通过以下命令安装:bash pip install pandas openpyxl -
文件路径:
- 如果需要将文件保存到特定路径,可以在
save_to_excel函数中指定完整的路径,例如:python save_to_excel(keys, filename="C:/path/to/save/Donkey_Discount_Keys.xlsx")
这就简单生成 30 个随机码并保存到 Excel 文件中。
后期可做
- 本地生成数据库: 可以使用postgresql或者mySQL 数据库来存储这些数据,添加一个表,多个字段,例如:姓名,年龄,电话, 核销情况,参与互动情况等等.
- 目前暂时搁置.