是否可以在 Python 3 中获取临时文件的路径

Is it possible to get the path of a tempfile in Python 3

我想知道是否可以获取使用 tempfile 库制作的临时文件的文件路径。基本上,我正在尝试制作一个函数来获取一些数据,并根据所述数据生成一个临时 csv 文件。我想知道有没有办法得到这个临时文件的路径?

使用tempfile.NamedTemporaryFile创建一个带名字的临时文件,然后使用对象的.name属性。

请注意,对于如何使用此名称存在特定于平台的限制。 documentation 表示:

Whether the name can be used to open the file a second time, while the named temporary file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows NT or later).

tempfile.NamedTemporaryFile 有一个 .dir 属性 可以满足您的需求。


编辑:不,它不是 .name,@Barmar,但是查看临时文件的源代码,我也没有看到 .dir 属性。但是,您 可以 .name 属性 与 os.pathdirname 方法结合使用,如下所示:

with tempfile.NamedTemporaryFile(suffix='.csv', prefix=os.path.basename(__file__)) as tf:
    tf_directory = os.path.dirname(tf.name)

无论如何,如果您需要临时文件目录路径,您可以使用tempfile.gettempdir()

这可以很好地获取文件名的完整路径

file = tempfile.NamedTemporaryFile()
filename = file.name

输出:

/tmp/tmp_sl4v9ps