Palavras-chave: userdir, home, homedrive, homepath, arquivo de configuração
Frequentemente precisamos guardar preferências do usuário de nossos programas em algum arquivo de configuração. Em ambientes UNIX/Linux a prática diz que esses arquivos devem ser guardados dentro do diretório $HOME e de preferência como um arquivo (ou diretório) oculto.
Mas usar a variável de ambiente $HOME para obter o diretório não é uma solução muito portável e certamente irá falhar em outros sistemas operacionais, como o Windows.
Para esses casos o módulo os.path disponibiliza a função expanduser() que irá substituir o símbolo ~ pelo caminho completo de onde devemos guardar esses os arquivos de configuração. Veja abaixo um exemplo de uso desta função:
import os.path print os.path.expanduser("~/.arquivorc")
Rodando esse exemplo em um ambiente UNIX/Linux iremos obter algo parecido com isso:
/home/username/.arquivorc
Já em uma máquina com Windows (XP) teremos:
C:\\Documents and Settings\\username\\.arquivorc
Algumas observações:
-
Em ambientes UNIX/Linux é possível obter o $HOME de outros usuários. Para isso basta usar expanduser("~outro_usuario"). Isso não funcionará no Windows.
-
Não existe um padrão que diga o lugar correto para guardar arquivos de configuração no Windows. O diretório sugerido aqui é aceito mas aparentemente o mais correto seria: C:\Documents and Settings\username\Application Data\meu_programa\config.ini (lembrando sempre que “Application Data” pode ter outro nome em Windows de outros idiomas).
-
A forma 100% correta para achar esse diretório no Windows envolve a procura no “Registry” do Windows, mas isso fugiria do escopo dessa dica.
no caso do rwindows coloque #appdata# que normalmente os arquivos serão extraídos para esse diretório