11

在 python 中,您可以创建一个临时文件,如下所示:

tempfile.TemporaryFile()

然后你可以写信给它。在 GNU/Linux 系统中写入的文件在哪里?我似乎无法在 /tmp 目录或任何其他目录中找到它。

谢谢,

4

3 回答 3

11

调用tempfile.gettempdir()函数

返回当前选择的目录以在其中创建临时文件。

如果您想影响临时文件的创建位置,可以通过将tempfile.tempdir值设置为不同的目录来更改临时文件的创建位置。从文档中引用,如果该值是None规则如下:

如果 tempdir 未设置或None调用任何上述函数,Python 将搜索标准目录列表并将 tempdir 设置为调用用户可以在其中创建文件的第一个目录。列表为:

  1. TMPDIR由环境变量命名的目录。
  2. TEMP由环境变量命名的目录。
  3. TMP由环境变量命名的目录。
  4. 特定于平台的位置:
    • 在 RiscOS 上,由Wimp$ScrapDir环境变量命名的目录。
    • 在 Windows 上,目录C:\TEMPC:\TMP\TEMP\TMP, 按此顺序排列。
    • 在所有其他平台上,目录/tmp/var/tmp/usr/tmp, 按此顺序排列。
  5. 作为最后的手段,当前工作目录。
于 2013-08-16T18:58:17.287 回答
7

查看.name文件句柄确实是查看文件存在位置的一种方法。在TemporaryFile(在 *NIX 系统上)的情况下,您会看到<fdopen>,表示打开的文件句柄,但没有相应的目录条目。NamedTemporaryFile如果您想保留指向基础文件的链接,则需要使用。


如果您想控制临时文件的位置,请查看dir参数:

TemporaryFileuses mkstemp,它允许使用dir参数设置目录:

如果dir指定,文件将在该目录中创建;否则,使用默认目录。默认目录是从依赖于平台的列表中选择的,但应用程序的用户可以通过设置TMPDIRTEMPTMP环境变量来控制目录位置。

于 2013-08-16T18:57:48.603 回答
2

在外壳上试试这个

    $python
>>> import tempfile
    >>>tempfile.gettempdir()

'/var/folders/5r/lxh8g5ln7zg43_l_3t0j7b1c0000gn/T'

这将向您显示 python 正在使用的实际临时路径。

您可以选择尝试这个。(这将产生与上述相同的结果)

    $python
>>> import tempfile
    >>>tempfile.tempdir
'/var/folders/5r/lxh8g5ln7zg43_l_3t0j7b1c0000gn/T'
于 2013-08-16T19:13:15.743 回答