Existe-t-il un moyen multiplateforme d'obtenir le chemin d'accès au temp
ré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 temp
ré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:
Pour être complet, voici comment il recherche le répertoire temporaire, selon la documentation:
TMPDIR
variable d'environnement.TEMP
variable d'environnement.TMP
variable d'environnement.Wimp$ScrapDir
variable d'environnement.C:\TEMP
,C:\TMP
,\TEMP
et\TMP
, dans cet ordre./tmp
,/var/tmp
et/usr/tmp
, dans cet ordre.la source
/var/folders/<garbage/here>
lieu de/tmp
parce que c'est comme ça que ça se$TMPDIR
passe. Voyez ici .tempfile.gettempdir()
résout enC:\users\user\AppData\Local\Temp
. Un chemin malheureusement long.Cela devrait faire ce que vous voulez:
Pour moi sur ma box Windows, j'obtiens:
et sur ma box Linux je reçois:
la source
J'utilise:
En effet, sur MacOS, c'est-à-dire Darwin,
tempfile.gettempdir()
etos.getenv('TMPDIR')
retourne une valeur telle que'/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T'
; c'est celle que je ne veux pas toujours.la source
La manière la plus simple, basée sur le commentaire et la réponse de @ nosklo :
Mais si vous souhaitez contrôler manuellement la création des répertoires:
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:
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.la source
tempfile.mkdtemp()
placemkdtemp()
vous avez suggérée.