Existe uma maneira multiplataforma de obter o caminho para o temp
diretório no Python 2.6?
Por exemplo, no Linux /tmp
, enquanto no XP C:\Documents and settings\[user]\Application settings\Temp
.
Existe uma maneira multiplataforma de obter o caminho para o temp
diretório no Python 2.6?
Por exemplo, no Linux /tmp
, enquanto no XP C:\Documents and settings\[user]\Application settings\Temp
.
Respostas:
Esse seria o módulo tempfile .
Possui funções para obter o diretório temporário e também possui alguns atalhos para criar arquivos e diretórios temporários, com ou sem nome.
Exemplo:
Para completar, veja como ele procura o diretório temporário, de acordo com a documentação:
TMPDIR
variável de ambiente.TEMP
variável de ambiente.TMP
variável de ambiente.Wimp$ScrapDir
variável de ambiente.C:\TEMP
,C:\TMP
,\TEMP
, e\TMP
, nessa ordem./tmp
,/var/tmp
e/usr/tmp
, nessa ordem.fonte
/var/folders/<garbage/here>
vez de/tmp
porque é assim que$TMPDIR
está definido. Veja aqui .tempfile.gettempdir()
resolve paraC:\users\user\AppData\Local\Temp
. Infelizmente, um longo caminho.Isso deve fazer o que você deseja:
Para mim na minha caixa do Windows, recebo:
e na minha caixa Linux eu recebo:
fonte
Eu uso:
Isso ocorre no MacOS, ou seja, Darwin,
tempfile.gettempdir()
eos.getenv('TMPDIR')
retorna um valor como'/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T'
; é aquele que eu nem sempre quero.fonte
A maneira mais simples, com base no comentário de @ nosklo e resposta do :
Mas se você deseja controlar manualmente a criação dos diretórios:
Dessa forma, você pode facilmente limpar você mesmo quando terminar (por privacidade, recursos, segurança, o que for) com:
Isso é semelhante ao que aplicativos como Google Chrome e Linux
systemd
fazem. Eles apenas usam um hash hex menor e um prefixo específico do aplicativo para "anunciar" sua presença.fonte
tempfile.mkdtemp()
vez dissomkdtemp()
você sugeriu.