【发布时间】:2023-03-13 16:39:01
【问题描述】:
在python中你可以创建一个临时文件如下:
tempfile.TemporaryFile()
然后你就可以给它写信了。在 GNU/Linux 系统中写入的文件在哪里?我似乎在 /tmp 目录或任何其他目录中找不到它。
谢谢,
【问题讨论】:
-
当我尝试时:mytempfile.name 我得到:"
"
标签: python linux temporary-files
在python中你可以创建一个临时文件如下:
tempfile.TemporaryFile()
然后你就可以给它写信了。在 GNU/Linux 系统中写入的文件在哪里?我似乎在 /tmp 目录或任何其他目录中找不到它。
谢谢,
【问题讨论】:
标签: python linux temporary-files
拨打tempfile.gettempdir() function:
返回当前选择的创建临时文件的目录。
如果您想影响临时文件的创建位置,您可以通过将tempfile.tempdir value 设置为不同的目录来更改临时文件的创建位置。从文档中引用,如果该值为None,则规则如下:
如果在对上述任何函数的任何调用中未设置 tempdir 或
None,Python 将搜索标准目录列表并将 tempdir 设置为调用用户可以在其中创建文件的第一个。列表是:
TMPDIR环境变量命名的目录。TEMP环境变量命名的目录。TMP环境变量命名的目录。- 特定于平台的位置:
- 在 RiscOS 上,由
Wimp$ScrapDir环境变量命名的目录。- 在 Windows 上,目录
C:\TEMP、C:\TMP、\TEMP和\TMP,按此顺序排列。- 在所有其他平台上,目录
/tmp、/var/tmp和/usr/tmp按顺序排列。- 作为最后的手段,当前工作目录。
【讨论】:
查看文件句柄上的.name 确实是查看文件存在位置的一种方法。对于TemporaryFile(在*NIX 系统上),您将看到<fdopen>,表示打开的文件句柄,但没有相应的目录条目。如果您想保留指向基础文件的链接,则需要使用 NamedTemporaryFile。
如果您希望控制临时文件的去向,请查看dir 参数:
TemporaryFile 使用mkstemp,它允许使用dir 参数设置目录:
如果指定
dir,文件将在该目录中创建;否则,使用默认目录。默认目录是从与平台相关的列表中选择的,但应用程序的用户可以通过设置TMPDIR、TEMP或TMP环境变量来控制目录位置。
【讨论】:
TemporaryFile 只处理操作系统file descriptor,因此没有可访问的文件名。如果您想要一个具有可访问路径的文件,请使用NamedTemporaryFile。阅读mkstemp 的文档有望对此有所了解并消除任何混淆。
tempfile.NamedTemporaryFile()。
在shell上试试这个
$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'
【讨论】:
tempfile.tempdir 在您调用tempfile.gettempdir() 时设置; temfile.tempdir 将从 None 开始。