如何基于CLI输入参数生成短且唯一的字符串作为文件标识符
你得到的是hashlib生成的MD5计算对象,而非最终哈希结果,只要调用hexdigest()方法就能得到可读的十六进制哈希字符串,再切片取前20位即可。
基础修改版
直接在原有代码基础上补充方法调用即可:
import sys import hashlib file_id = hashlib.md5(str(sys.argv).encode("utf-8")).hexdigest()[:20] print(file_id)
更稳妥的优化版
直接转换str(sys.argv)存在极端场景下的参数冲突风险,比如不同参数组合刚好生成相同的字符串表示,建议用不会出现在常规CLI参数中的特殊字符拼接所有参数后再做哈希:
import sys import hashlib # 用ASCII空字符拼接参数,避免不同参数意外拼出相同字符串 param_content = "\x00".join(sys.argv) file_id = hashlib.md5(param_content.encode("utf-8")).hexdigest()[:20] print(file_id)
20位长度的MD5切片碰撞概率极低,完全可以满足普通业务场景下的唯一标识需求。
内容的提问来源于stack exchange,提问作者ErnestoC
相关产品推荐
相关产品推荐

