205 votes

python - os.makedirs ne comprend pas ~ sur mon chemin?

J'ai un petit problème avec ~ dans mes chemins.

Cet exemple de code crée des répertoires appelés "~ / some_dir" et ne comprend pas que je veuille créer quel_dir dans mon répertoire personnel.

 my_dir = "~/some_dir"
if not os.path.exists(my_dir):
    os.makedirs(my_dir)
 

Notez que ceci est sur un système basé sur Linux.

Merci Johan


Solution :

Merci à tous, si j’ai ajouté la ligne SilentGhost et ddaa ont suggéré que cela fonctionne comme prévu.

 my_dir = "~/some_dir"
my_dir = os.path.expanduser(my_dir)
if not os.path.exists(my_dir):
    os.makedirs(my_dir)
 

350voto

SilentGhost Points 79627

vous devez développer le tilde manuellement:

 my_dir = os.path.expanduser('~/some_dir')
 

84voto

ddaa Points 19102

La conversion de ~/some_dir en $HOME/some_dir est appelée extension de tilde et constitue une fonctionnalité d'interface utilisateur commune. Le système de fichiers ne sait rien à ce sujet.

En Python, cette fonctionnalité est implémentée par os.path.expanduser :

 my_dir = os.path.expanduser("~/some_dir")
 

15voto

gruszczy Points 14097

C'est probablement parce que Python n'est pas Bash et ne suit pas les mêmes conventions. Vous pouvez utiliser ceci:

 homedir = os.path.expanduser('~')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X