首页 > 编程语言 >Python生成简短的唯一ID

Python生成简短的唯一ID

时间:2023-06-25 11:22:08浏览次数:50  
标签:Tmp short uid Python 生成 LastId 简短 ID

GUID生成的ID太长, 不方便使用, 我想生成一个短的, 最好不要有特殊字符, 另外, 只在本机使用, 不跨网络, 所以我使用当前时间作为生成的ID, 为了使生成的ID更短一些, 对它进行重新编码; 另外, 为防止短时间内有重复的ID, 记录上次生成的ID并进行重复判断.
代码如下:

def GenerateId()->str:
    '''生成唯一ID标记, 由大写字母和数字组成, 形如:AGEPAW5WOM'''
    def _Tmp()->str:
        '''根据毫秒数生成唯一ID'''
        # 获取当前时间的时间戳(毫秒级)
        milliseconds = int(time.time() * 1000)
        # 将整数转换为字节串
        num_bytes = milliseconds.to_bytes((milliseconds.bit_length() + 7) // 8, 'big')
        # 生成唯一ID, 由大写字母和数字组成
        short_uid = base64.b32encode(num_bytes).decode('utf-8').rstrip('=')
        return short_uid
    short_uid = _Tmp()
    # 如果生成的ID和上次相同, 则等待一段时间重新生成
    if _Vars.LastId!=None and short_uid==_Vars.LastId:
        time.sleep(0.001)   # 等待1毫秒, 肯定没有问题了
        short_uid = _Tmp()
    _Vars.LastId = short_uid
    return short_uid

最后生成的ID形如:AGEPAW5WOM, 只有10个字符.

标签:Tmp,short,uid,Python,生成,LastId,简短,ID
From: https://www.cnblogs.com/huzhongqiang/p/17502418.html

相关文章

  • vue中微信身份识别(openid)
    最近做一个投票功能,为了防止用户恶意刷票,必须鉴别用户身份,对每个人投票次数限制。但投票是开放的,任何人都可以投,并非仅平台注册用户,因此只能使用用户最广泛的微信来识别用户,通过获取微信openid来判定用户是否已经投过票。在vue中,需要添加一个静态html(weixinOAuth.html)来进行跳转......
  • Apache RocketMQ EventBridge:构建下一代事件驱动引擎
    作者:沈林前言事件驱动,这个词在部分人印象中,它是一个过时的技术——没什么新意。从时间上看,确实也是这样,上世纪60年代,事件驱动就已经被正式提出,经常会被在GUI编程中。但是在有些人印象中,事件驱动又是一个非常陌生,非常新颖的技术。不管怎么样,现实是已经有越来越多的公司,开始......
  • nvidia显卡故障记录
    问题一:描述重启后,显卡就找不到驱动,因为都采用了同一个型号显卡且安装了相同版本的驱动,故猜测可能是硬件问题排查过程lspci|grep-invidia可以看到pci号是01:00.0,通过此pci号,查看一下详细信息lspci-s01:00.0-vv通过图上的信息可以发现"!!!Unknownheadertype7......
  • Midjouney限时免费体验
    前言Midjourney是一个人工智能程序,可根据文本生成图像,目前架设在Discord频道上。于2022年7月12日进入公开测试阶段,使用者可通过Discord的机器人指令进行操作,可以创作出很多的图像作品。AI绘图前景AI绘图前景如何?自动化程度高:AI绘图可以通过算法和数据自动化生......
  • python测试
      importosimportshutildefcheck_dir_exist(dir):#如果目标路径不存在原文件夹的话就创建ifnotos.path.exists(dir):os.makedirs(dir)defremove_dir(dir):#如果目标路径存在原文件夹的话就先删除ifos.path.exists(dir......
  • 深入Python网络编程:从基础到实践
    Python,作为一种被广泛使用的高级编程语言,拥有许多优势,其中之一就是它的网络编程能力。Python的强大网络库如socket,requests,urllib,asyncio,等等,让它在网络编程中表现优秀。本文将深入探讨Python在网络编程中的应用,包括了基础的socket编程,到高级的异步IO网络编程,以及我们如何......
  • Python的异步
    SimpleDemo错误示范code:importasyncioasyncdeftest(id):print(id,"开始执行")awaitasyncio.sleep(5)print(id,"执行结束")asyncio.run(test(1))asyncio.run(test(2))output:1开始执行1执行结束2开始执行2执行结束这样是不支持异步的,原......
  • Python3 configparser读取含有中文配置config.ini(Windows)显示乱码的解决方法
    最近在配置文件config.ini有中文输出时,python3打印出来显示乱码。初步判断是由于编码问题。在Python3中虽有encoding参数,但是对于有BOM(如Windows下用记事本指定为utf-8)的文件,需要使用utf-8-sig,使用utf-8没办法。配置文件config.ini如下:[TABLEDATA]project_name......
  • 笔记本输入python无提示、也无报错(不提示“不是内部或外部命令,也不是可运行的程序”)
    最近在安装Python的时候发生了很奇怪的现象(安装前):从命令行执行python并不会输出python版本信息,似乎也没有其他反应,也无报错(不提示“不是内部或外部命令,也不是可运行的程序”),再次输入命令wherepython显示C:\Users\quxw\AppData\Local\Microsoft\WindowsApps\python.exe,如下......
  • requests Python中最好用的网络请求工具 基础速记+最佳实践
    简介requests模块是写python脚本使用频率最高的模块之一。很多人写python第一个使用的模块就是requests,因为它可以做网络爬虫。不仅写爬虫方便,在日常的开发中更是少不了requests的使用。如调用后端接口,上传文件,查询数据库等。本篇详细介绍requests的使用。requests是⽤Python......