首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:如何创建唯一的文件名?

Python:如何创建唯一的文件名?
EN

Stack Overflow用户
提问于 2010-06-03 04:53:05
回答 9查看 121.1K关注 0票数 105

我有一个有两个选项的python web表单-文件上传文本区域。我需要从每个函数中获取值,并将它们传递给另一个命令行程序。我可以很容易地通过文件上传选项传递文件名,但我不确定如何传递textarea的值。

我想我需要做的是:

  1. 生成唯一的文件名
  2. 在工作目录中创建具有该名称的临时文件
  3. 将从文本区域传递的值保存到临时文件
  4. 从我的python模块内部执行命令行程序,并向其传递临时文件的名称

<代码>G213

我不确定如何生成唯一的文件名。有没有人能给我一些关于如何生成唯一文件名的提示?欢迎使用任何算法、建议和代码行。

感谢您的关心

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-06-03 05:12:17

我认为你的问题不是很清楚,但是如果你只需要一个唯一的文件名...

代码语言:javascript
复制
import uuid

unique_filename = str(uuid.uuid4())
票数 164
EN

Stack Overflow用户

发布于 2010-06-03 05:13:11

如果你想在Python中创建临时文件,在Python的标准库中有一个名为tempfile的模块。如果希望启动其他程序对该文件进行操作,请使用tempfile.mkstemp()创建文件,使用os.fdopen()访问mkstemp()提供的文件描述符。

顺便说一句,您是说正在从Python程序运行命令吗?您几乎肯定应该使用subprocess模块。

因此,您可以轻松地编写代码,如下所示:

代码语言:javascript
复制
import subprocess
import tempfile
import os

(fd, filename) = tempfile.mkstemp()
try:
    tfile = os.fdopen(fd, "w")
    tfile.write("Hello, world!\n")
    tfile.close()
    subprocess.Popen(["/bin/cat", filename]).wait()        
finally:
    os.remove(filename)

运行该命令后,您会发现cat命令工作得很好,但是临时文件在finally块中被删除了。请注意,您必须自己删除mkstemp()返回的临时文件--库无法知道您何时完成了它!

(编辑:我曾假设NamedTemporaryFile会做你想做的事情,但这可能不是那么方便-当临时文件对象关闭时,文件会立即被删除,在你关闭文件之前让其他进程打开它在某些平台上是不起作用的,特别是Windows。对不起,我失败了。)

票数 53
EN

Stack Overflow用户

发布于 2017-07-09 09:53:52

uuid模块将是一个很好的选择,我更喜欢使用uuid.uuid4().hex作为随机文件名,因为它将返回一个不带破折号的十六进制字符串。

代码语言:javascript
复制
import uuid
filename = uuid.uuid4().hex

输出应如下所示:

代码语言:javascript
复制
>>> import uuid
>>> uuid.uuid()
UUID('20818854-3564-415c-9edc-9262fbb54c82')
>>> str(uuid.uuid4())
'f705a69a-8e98-442b-bd2e-9de010132dc4'
>>> uuid.uuid4().hex
'5ad02dfb08a04d889e3aa9545985e304'  # <-- this one
票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2961509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档