Par exemple, en anglais, les dossiers d’utilisateur par défaut seront:
$HOME/Desktop
....
$HOME/Videos
En espagnol, les dossiers utilisateur par défaut seront:
$HOME/Escritorio
....
$HOME/Vídeos
Le fichier~/.config/user-dirs.dirs
a ceux qui localisent les noms des dossiers par défaut. (Toujours?).
J'ai besoin d'obtenir ces noms d'un script python. J'aimerais ne pas analyser ce fichier. Y a-t-il une autre manière élégante? J'ai trouvé this :
from xdg.BaseDirectory import *
print xdg_cache_home
print xdg_config_dirs
print xdg_config_home
print xdg_data_dirs
print xdg_data_home
Mais il ne renvoie pas ces dossiers.
Merci d'avance!
Si cela ne vous dérange pas d’obtenir une dépendance sur GLib
ou si vous utilisez déjà GTK
en tant que boîte à outils, vous pouvez utiliser la méthode GLib.get_user_special_dir()
.
>>> from gi.repository import GLib
>>> GLib.get_user_special_dir(GLib.USER_DIRECTORY_PICTURES)
'/home/timo/Afbeeldingen'
>>> GLib.get_user_special_dir(GLib.USER_DIRECTORY_DOCUMENTS)
'/home/timo/Documenten'
>>> GLib.get_user_special_dir(GLib.USER_DIRECTORY_DOWNLOAD)
'/home/timo/Downloads'
Tous les disponibles répertoires:
G_USER_DIRECTORY_DESKTOP the user's Desktop directory
G_USER_DIRECTORY_DOCUMENTS the user's Documents directory
G_USER_DIRECTORY_DOWNLOAD the user's Downloads directory
G_USER_DIRECTORY_MUSIC the user's Music directory
G_USER_DIRECTORY_PICTURES the user's Pictures directory
G_USER_DIRECTORY_PUBLIC_SHARE the user's shared directory
G_USER_DIRECTORY_TEMPLATES the user's Templates directory
G_USER_DIRECTORY_VIDEOS the user's Movies directory
G_USER_N_DIRECTORIES the number of enum values
Si vous obtenez ce message d'erreur:
ImportError: lorsque vous utilisez gi.repository, vous ne devez pas importer de modules statiques tels que "gobject". Veuillez remplacer toutes les occurrences de "import gobject" par "de gi.repository import GObject".
Vous devez utiliser ceci:
import glib
return glib.get_user_special_dir(glib.USER_DIRECTORY_PICTURES)
Pour obtenir les répertoires XDG à partir de Python, vous devez installer (en fonction de votre version python) un des packages suivants:
Pour Python 2.x
Sudo apt-get install python-xdg
Pour Python 3:
Sudo apt-get install python3-xdg
$XDG_DATA_HOME
définit le répertoire de base par rapport auquel les fichiers de données spécifiques à l'utilisateur doivent être stockés. Si $XDG_DATA_HOME
n'est pas défini ou est vide, une valeur par défaut égale à $HOME/.local/share
doit être utilisée.
$XDG_CONFIG_HOME
définit le répertoire de base par rapport auquel les fichiers de configuration spécifiques à l'utilisateur doivent être stockés. Si $XDG_CONFIG_HOME
n'est pas défini ou est vide, une valeur par défaut égale à $HOME/.config
doit être utilisée.
$XDG_DATA_DIRS
définit l'ensemble de répertoires de base classés par ordre de préférence pour la recherche de fichiers de données en plus du répertoire de base $XDG_DATA_HOME
. Les répertoires dans $XDG_DATA_DIRS
doivent être séparés par un signe deux-points ':'.
Si $XDG_DATA_DIRS
n'est pas défini ou est vide, une valeur égale à /usr/local/share/:/usr/share/
doit être utilisée.
$XDG_CONFIG_DIRS
définit l'ensemble de répertoires de base classés par ordre de préférence pour la recherche de fichiers de configuration en plus du répertoire de base $XDG_CONFIG_HOME
. Les répertoires de $XDG_CONFIG_DIRS
doivent être séparés par un deux-points ':'.
Si $XDG_CONFIG_DIRS
n'est pas défini ou est vide, une valeur égale à /etc/xdg
doit être utilisée.
Source: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
Le fichier ~/.config/user-dirs.dirs
contiendra toujours les noms de localisation car l'outil xdg-user-dirs-update contrôle ce fichier, voir la section consacrée à la page de manuel:
The XDG user dirs configuration is stored in the user-dirs.dir file in the location pointed to by the XDG_CONFIG_HOME environment variable.
Le code python suivant vous permettra d'analyser le ~/.config/user-dirs.dirs
.
#!/usr/bin/env python
import io
import os
import re
import ConfigParser
from xdg.BaseDirectory import xdg_config_home
config = ConfigParser.RawConfigParser(allow_no_value=True)
f = open(os.path.join(xdg_config_home, "user-dirs.dirs"))
user_config = "[XDG_USER_DIR]\n" + f.read()
f.close()
user_config = re.sub('\$HOME', os.path.expanduser("~"), user_config)
user_config = re.sub('"', '', user_config)
config.readfp(io.BytesIO(user_config))
print config.get("XDG_USER_DIR", "XDG_PICTURES_DIR")