在Python中获取临时目录的跨平台方式

是否有跨平台的方式获取Python 2.6中temp目录的path?

例如,在Linux下是/tmp ,而在XP C:\Documents and settings\[user]\Application settings\Temp

谢谢!

那将是tempfile模块。

它具有获取临时目录的function,还有一些快捷方式可以创build临时文件和目录,既可以是已命名的,也可以是未命名的。

例:

 import tempfile print tempfile.gettempdir() # prints the current temporary directory f = tempfile.TemporaryFile() f.write('something on temporaryfile') f.seek(0) # return to beginning of file print f.read() # reads data back from the file f.close() # temporary file is automatically deleted here 

为了完整性,根据文档,以下是它如何search临时目录:

  1. TMPDIR环境variables命名的目录。
  2. TEMP环境variables命名的目录。
  3. TMP环境variables命名的目录。
  4. 平台特定的位置:
    • RiscOS上 ,由Wimp$ScrapDir环境variables命名的目录。
    • Windows上 ,依次为C:\TEMPC:\TMP\TEMP\TMP
    • 在所有其他平台上,依次为/tmp/var/tmp/usr/tmp
  5. 作为最后的手段,当前的工作目录。

这应该做你想要的:

 print tempfile.gettempdir() 

对于我在Windows上的我,我得到:

 c:\temp 

并在我的Linux机器上得到:

 /tmp 

从@ nosklo的答案和添加一个半私人沙箱目录的重要位置目录:

 import os from tempfile import gettempdir tmp = os.path.join(gettempdir(), '.{}'.format(hash(os.times()))) os.makedirs(tmp) 

这样,当你完成后(隐私,资源,安全,无论什么),你可以轻松清理:

 from shutil import rmtree rmtree(tmp, ignore_errors=True) 

这与Google Chrome和Linux系统的应用程序类似。 他们只是使用较短的hex哈希和应用程序特定的前缀来“宣传”他们的存在。

我用:

 import platform import tempfile tempdir = '/tmp' if platform.system() == 'Darwin' else tempfile.gettempdir() 

这是因为在MacOS上,即Darwin, tempfile.gettempdir()os.getenv('TMPDIR')返回一个值,如'/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T' ; 这是我不想要的!