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

在 Python 中创建一个唯一的文件名

How to create a unique file name in Python

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

主程序
import uuid unique_filename = str(uuid.uuid4()) print(unique_filename) # 👉️ f82761e1-8f97-4c6a-a3af-3667808d21be unique_filename = uuid.uuid4().hex print(unique_filename) # 👉️ 65128b2ae8da4d2caea7026f8685be0f

a 被复制的概率UUID不为零,但它非常
接近于零,可以忽略不计

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

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

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

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

主程序
import uuid unique_file_name = str(uuid.uuid4()) print(unique_file_name) # 👉️ d28495ae-4636-44a3-a8dc-fc5cf6f31d5e unique_file_name = str(uuid.uuid4()) print(unique_file_name) # 👉️ eecb0a86-b3da-4a7f-919a-1088bb5777ff

如果您更愿意生成不带连字符的唯一文件名,请使用该hex
属性。

主程序
import uuid unique_file_name = uuid.uuid4().hex print(unique_file_name) # 👉️ e8f27a4918ac47bd86bea9986f4bb38f unique_file_name = uuid.uuid4().hex print(unique_file_name) # 👉️ 9943004bec4b4b0085c493e795aa383d
对象的hex属性将 UUID 作为 32 个字符的小写十六进制字符串返回。

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

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

如果您需要生成一个具有随机名称的临时文件,请使用该
tempfile.NamedTemporaryFile()函数。

主程序
import tempfile file = tempfile.NamedTemporaryFile() print(file.name) # 👉️ /tmp/tmp281uq_28 file.close()

The
tempfile.NamedTemporaryFile
function returns a file-like object that can be used as a temporary storage
area.

You can use the name attribute on the object to access the file’s name on the file system.

By default, the file is deleted as soon as it is closed, but you can set the
delete keyword argument to False to keep the file.

main.py
import tempfile file = tempfile.NamedTemporaryFile(mode='w+b', delete=False) print(file.name) # 👉️ /tmp/tmplp3yjtai print(file.file) # 👉️ <_io.BufferedRandom name='/tmp/tmplp3yjtai'> file.close()

The returned object has a file attribute that points to the underlying file
object.

You can also set the optional prefix and suffix arguments if you need to tweak the name of the temporary file.
main.py
import tempfile file = tempfile.NamedTemporaryFile(mode='w+b', delete=False, prefix='abc') print(file.name) # 👉️ /tmp/abclogogxys print(file.file) # 👉️ <_io.BufferedRandom name='/tmp/abclogogxys'> file.close()

The mode parameter defaults to w+b, so the file can be read and written
without being closed.

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

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

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

发表评论