zak*_*ces 7 python string random
我创建了一个系统,用户将视频上传到我服务器的文件系统,我需要一种方法来为视频文件生成唯一的文件名.我应该使用random.getrandbits吗?有没有办法用字母和数字的组合来做到这一点?
Chr*_*row 11
这是我使用的:
import base64
import uuid
base64.urlsafe_b64encode(uuid.uuid4().bytes)
Run Code Online (Sandbox Code Playgroud)
我生成一个uuid,但我使用的是字节而不是更大的十六进制版本或者使用破折号.然后我将其编码为URL安全的base-64字符串.这是一个比使用十六进制更短的字符串,但使用base64可以使字符串中的字符对文件,URL和大多数其他内容都是安全的.
一个问题是,即使使用urlsafe_b64encode,它总是希望'='的标志到最后,这不是那么安全.'='符号用于解码base-64编码信息,因此如果您只是尝试生成随机字符串,那么您可以安全地删除它们:
str.replace('=', '')
Run Code Online (Sandbox Code Playgroud)
您可以在Python 3.6 中使用secrets 模块。
>>> import secrets
>>> secrets.token_urlsafe(8)
'Pxym7N2zJRs'
Run Code Online (Sandbox Code Playgroud)
更多文档位于: https: //docs.python.org/3/library/secrets.html