Existe-t-il un moyen multiplateforme d'obtenir le chemin d'accès au temprépertoire dans Python 2.6?  
Par exemple, sous Linux, ce serait /tmp, tandis que sous XP C:\Documents and settings\[user]\Application settings\Temp.
Existe-t-il un moyen multiplateforme d'obtenir le chemin d'accès au temprépertoire dans Python 2.6?  
Par exemple, sous Linux, ce serait /tmp, tandis que sous XP C:\Documents and settings\[user]\Application settings\Temp.
Réponses:
Ce serait le module tempfile .
Il a des fonctions pour obtenir le répertoire temporaire, et possède également des raccourcis pour y créer des fichiers et des répertoires temporaires, nommés ou non.
Exemple:
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 herePour être complet, voici comment il recherche le répertoire temporaire, selon la documentation:
TMPDIRvariable d'environnement.TEMPvariable d'environnement.TMPvariable d'environnement.Wimp$ScrapDirvariable d'environnement.C:\TEMP, C:\TMP, \TEMPet \TMP, dans cet ordre./tmp, /var/tmpet /usr/tmp, dans cet ordre./var/folders/<garbage/here>lieu de /tmpparce que c'est comme ça que ça se $TMPDIRpasse. Voyez ici .
                    tempfile.gettempdir()résout en C:\users\user\AppData\Local\Temp. Un chemin malheureusement long.
                    Cela devrait faire ce que vous voulez:
print tempfile.gettempdir()Pour moi sur ma box Windows, j'obtiens:
c:\tempet sur ma box Linux je reçois:
/tmpJ'utilise:
from pathlib import Path
import platform
import tempfile
tempdir = Path("/tmp" if platform.system() == "Darwin" else tempfile.gettempdir())En effet, sur MacOS, c'est-à-dire Darwin, tempfile.gettempdir()et os.getenv('TMPDIR')retourne une valeur telle que '/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T'; c'est celle que je ne veux pas toujours.
La manière la plus simple, basée sur le commentaire et la réponse de @ nosklo :
import tempfile
tmp = tempfile.mkdtemp()Mais si vous souhaitez contrôler manuellement la création des répertoires:
import os
from tempfile import gettempdir
tmp = os.path.join(gettempdir(), '.{}'.format(hash(os.times())))
os.makedirs(tmp)De cette façon, vous pouvez facilement nettoyer après vous lorsque vous avez terminé (pour la confidentialité, les ressources, la sécurité, etc.) avec:
from shutil import rmtree
rmtree(tmp, ignore_errors=True)Ceci est similaire à ce que font des applications comme Google Chrome et Linux systemd. Ils utilisent simplement un hachage hexadécimal plus court et un préfixe spécifique à l'application pour "annoncer" leur présence.
tempfile.mkdtemp()place
                    mkdtemp()vous avez suggérée.