如何快速生成指定长度的随机码

昨天晚上开会聊天说起生成随机码来做打折卡,在线可查的那种. 脑海里就直接有个想法了。 字母数字各一半。

安装库

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 个随机码。

注意事项

  • 依赖库:
  • 确保安装了 pandasopenpyxl 库,用于处理 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 数据库来存储这些数据,添加一个表,多个字段,例如:姓名,年龄,电话, 核销情况,参与互动情况等等.
  • 目前暂时搁置.