如何在 Python 中创建唯一的文件名

使用 uuid.uuid4() 方法创建一个唯一的文件名,例如 unique_filename = str(uuid.uuid4())。 uuid4() 方法返回一个重复概率可以忽略不计的 UUID 对象。

import uuid

unique_filename = str(uuid.uuid4())
print(unique_filename)  # a0e95771-f03d-4808-aa32-c60fa67744aa

unique_filename = uuid.uuid4().hex
print(unique_filename)  # 6af9d6efe05344a685a7399a2cff43c0

如何在 Python 中创建唯一的文件名

UUID 将被复制的概率不是零,但它足够接近于零,可以忽略不计。

在 103 万亿个版本 4 UUID 中找到重复的概率是十亿分之一。

内置的 uuid 模块提供了不可变的 UUID 对象和用于生成 UUID 的函数。

如果我们只需要一个唯一的文件名,应该使用 uuid4() 方法。

我们可以将唯一 ID 传递给 str() 类,以将 UUID 转换为标准格式的十六进制数字字符串。

import uuid

unique_file_name = str(uuid.uuid4())
print(unique_file_name) 

unique_file_name = str(uuid.uuid4())
print(unique_file_name) 

如何在 Python 中创建唯一的文件名

如果我们希望生成不带连字符的唯一文件名,请使用 hex 属性。

import uuid

unique_file_name = uuid.uuid4().hex
print(unique_file_name) 

unique_file_name = uuid.uuid4().hex
print(unique_file_name) 

如何在 Python 中创建唯一的文件名

对象的 hex 属性将 UUID 作为 32 个字符的小写十六进制字符串返回。

hex 属性返回一个字符串,所以我们不必使用 str() 类。

如果我们只需要一个唯一的文件名,那么 uuid.uuid4() 方法应该是我们的首选方法。

如果我们需要生成具有随机名称的临时文件,请使用 tempfile.NamedTemporaryFile() 方法。

import tempfile

file = tempfile.NamedTemporaryFile()

print(file.name) 

file.close()

如何在 Python 中创建唯一的文件名

tempfile.NamedTemporaryFile 函数返回一个类似文件的对象,可以用作临时存储区域。

我们可以使用对象上的 name 属性来访问文件系统上的文件名。

默认情况下,文件一关闭就会被删除,但我们可以将 delete 关键字参数设置为 False 以保留文件。

import tempfile

file = tempfile.NamedTemporaryFile(mode='w+b', delete=False)

print(file.name) 
print(file.file) 

file.close()

如何在 Python 中创建唯一的文件名

返回的对象具有指向底层文件对象的文件属性。

如果我们需要调整临时文件的名称,我们还可以设置可选的前缀和后缀参数。

import tempfile

file = tempfile.NamedTemporaryFile(mode='w+b', delete=False, prefix='abc')

print(file.name) 
print(file.file) 

file.close()

mode参数默认为w+b,所以文件可以不关闭也可以读写。

w+b 模式以二进制模式打开文件进行写入和读取,如果存在则覆盖现有文件。

如果该文件不存在,则会创建一个具有给定名称的新文件。

使用二进制模式以便函数在所有平台上的行为一致,而不管存储的数据类型如何。