怎么用脚本生成随机串口号

wen 实用脚本 1
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
随机串口号生成器
用法: python script.py [长度] [数量]
示例: python script.py 12 5   # 生成5个长度为12的随机串
"""
import random
import string
import sys
# --- 配置区 (可修改) ---
# 默认字符集: 大小写字母和数字(去掉易混淆的字符 O,0,I,1,l)
DEFAULT_CHARSET = string.ascii_letters + string.digits
# 如果希望包含特殊符号,取消下面一行的注释
# DEFAULT_CHARSET = string.ascii_letters + string.digits + string.punctuation
# 如果希望严格保证包含数字和字母,可以将下面的标志设为True
GUARANTEE_MIXED = True
# 默认长度和数量
DEFAULT_LENGTH = 16
DEFAULT_COUNT = 1
# ----------------------
def generate_serial(length: int, charset: str | list[str], guarantee: bool = False) -> str:
    """
    生成一个随机串。
    :param length: 串的长度
    :param charset: 字符集(字符串或字符列表)
    :param guarantee: 是否保证包含至少一个字母和一个数字
    :return: 随机串
    """
    if length <= 0:
        raise ValueError("长度必须大于0")
    # 如果要求保证混合且字符集同时包含字母和数字,则至少需要2个字符
    if guarantee and length < 2:
        raise ValueError("如果要求包含字母和数字,长度至少为2")
    # 保证混合时,先随机挑选一个字母和一个数字的位置
    if guarantee:
        # 过滤出字母和数字子集(注意:数字可能包含在letters里,但这里以str判断)
        letters = [c for c in charset if c.isalpha()]
        digits = [c for c in charset if c.isdigit()]
        if not letters or not digits:
            raise ValueError("字符集必须同时包含字母和数字才能保证混合")
        # 随机选一个字母和一个数字,并决定它们的位置
        parts = [''] * length
        pos_letter = random.randrange(length)
        pos_digit = random.randrange(length)
        while pos_digit == pos_letter:  # 确保不同位置
            pos_digit = random.randrange(length)
        parts[pos_letter] = random.choice(letters)
        parts[pos_digit] = random.choice(digits)
        # 剩余的位置随机填充
        for i in range(length):
            if parts[i] == '':
                parts[i] = random.choice(charset)
        return ''.join(parts)
    else:
        # 直接随机生成
        return ''.join(random.choices(charset, k=length))
def main():
    # 解析命令行参数
    length = DEFAULT_LENGTH
    count = DEFAULT_COUNT
    if len(sys.argv) > 1:
        try:
            length = int(sys.argv[1])
        except ValueError:
            print(f"警告: 长度参数 '{sys.argv[1]}' 无效,使用默认长度 {DEFAULT_LENGTH}")
            length = DEFAULT_LENGTH
    if len(sys.argv) > 2:
        try:
            count = int(sys.argv[2])
        except ValueError:
            print(f"警告: 数量参数 '{sys.argv[2]}' 无效,使用默认数量 {DEFAULT_COUNT}")
            count = DEFAULT_COUNT
    print(f"生成 {count} 个长度为 {length} 的随机串:")
    for i in range(count):
        print(generate_serial(length, DEFAULT_CHARSET, GUARANTEE_MIXED))
if __name__ == "__main__":
    main()

使用说明

运行方法

怎么用脚本生成随机串口号

  1. 将脚本保存为 serial_gen.py
  2. 在终端执行:python serial_gen.py 12 5
    (生成5个长度为12的串口号)

配置修改(在脚本顶部的“配置区”调整):

  • DEFAULT_CHARSET:更换字符集(例如添加string.punctuation以包含特殊符号)
  • GUARANTEE_MIXED:设为True时,确保每个串号同时包含字母和数字(更安全)
  • DEFAULT_LENGTH / DEFAULT_COUNT:修改默认参数

输出示例(长度为16,数量3):

aK7xQm3ZtLw9Rf2B
NpD8vHs4YcE5tUjG
Fb6WdXc1JrA3sKpL

如需生成Windows产品密钥格式(如 XXXXX-XXXXX-XXXXX),或需要排除易混淆字符,请在回复中告诉我,我可以为您调整版本。

抱歉,评论功能暂时关闭!