Python 生成随机文件名安全和URL安全字符串

Python 生成随机文件名安全和URL安全字符串,python,string,random,Python,String,Random,我已经创建了一个系统,用户可以将视频上传到服务器的文件系统中,我需要一种为视频文件生成唯一文件名的方法。我应该使用random.getrandbits吗?有没有一种方法可以通过字母和数字的组合来实现这一点?看看和Python的模块。这就是我使用的: import base64 import uuid base64.urlsafe_b64encode(uuid.uuid4().bytes) 我生成一个uuid,但我使用字节,而不是更大的十六进制版本或带破折号的版本。然后我将其编码为URL安全的

我已经创建了一个系统,用户可以将视频上传到服务器的文件系统中,我需要一种为视频文件生成唯一文件名的方法。我应该使用random.getrandbits吗?有没有一种方法可以通过字母和数字的组合来实现这一点?

看看和Python的模块。

这就是我使用的:

import base64
import uuid

base64.urlsafe_b64encode(uuid.uuid4().bytes)
我生成一个uuid,但我使用字节,而不是更大的十六进制版本或带破折号的版本。然后我将其编码为URL安全的base-64字符串。这是一个长度比使用十六进制短的字符串,但使用base64可以使字符串中的字符对于文件、URL和大多数其他内容都是安全的

一个问题是,即使使用urlsafe_b64encode,它也总是希望将“=”符号放在不太安全的url的末尾。“=”符号用于解码base-64编码信息,因此,如果您仅尝试生成随机字符串,则可以使用以下方法安全地删除它们:

str.replace('=', '')

在Python3.6中,可以使用secrets模块

>>> import secrets
>>> secrets.token_urlsafe(8)
'Pxym7N2zJRs'

更多文档如下:

您使用的框架可能重复?这通常是为您处理的。现有的库有什么问题?@s.Lott我认为他不想临时存储视频。文件名没有“临时”的意思。它们可以在
/tmp
文件系统之外。我确实想暂时存储视频…它们应该可以预览(播放),然后上传到youtube,然后删除原始视频。这正是我现在需要的;谢谢我想你会想知道你对一个低分问题的回答仍然帮助了互联网上的一个随机的家伙。谢谢你的反馈。对我们来说,到目前为止,它经受住了时间的考验,差不多一年之后,我们仍然在整个应用程序中使用这个小片段代码来生成主键。注意到在Python 3上,我必须包含
.decode('utf-8')
以获得一个字符串来替换:
base64.urlsafe_b64encode(uuid.uuid4().bytes)。decode('utf-8')).替换('=','')