python tempfile在哪里写文件?

python中,你可以创build一个tempfile,如下所示:

tempfile.TemporaryFile() 

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

谢谢,

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


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

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

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

调用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. 作为最后的手段,当前的工作目录。

在壳上试试这个

  $python >>> import tempfile >>>tempfile.gettempdir() '/var/folders/5r/lxh8g5ln7zg43_l_3t0j7b1c0000gn/T' 

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

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

  $python >>> import tempfile >>>tempfile.tempdir '/var/folders/5r/lxh8g5ln7zg43_l_3t0j7b1c0000gn/T'