Ce qui aurait dû être fait
Vous auriez dû effectuer home=os.path.expanduser("~")
d'abord et ensuite os.path.join(home,"something")
. Le site ~
est traité comme du texte en Python et ne s'étend pas comme il le fait en bash
ou d'autres coquillages.
$ python -c 'import os;home=os.path.expanduser("~"); os.mkdir(os.path.join(home,"something"))'
$ ls -ld ~/something
drwxrwxr-x 2 xieerqi xieerqi 4096 7 12 21:00 /home/xieerqi/something/
Comment s'en débarrasser
En plus des méthodes déjà mentionnées, nous pouvons utiliser la valeur hexagonale pour ~
à partir de la table de caractères ascii, qui contrairement à l'actuel ~
ne s'étend pas au répertoire personnel de l'utilisateur sur la ligne de commande (Au cas où vous vous poseriez la question, lorsque le tilde apparaît au début d'un mot, il s'étend au répertoire personnel de l'utilisateur. Comparez ls ~
y ls $'\x7e'
).
Voici comment cela fonctionnerait :
# Make the directory
$ mkdir ./~
$ stat ./$'\x7e'
File: './~'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 5768019 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1000/ xieerqi) Gid: ( 1000/ xieerqi)
Access: 2017-07-12 21:05:31.382828424 -0600
Modify: 2017-07-12 21:05:31.382828424 -0600
Change: 2017-07-12 21:05:31.382828424 -0600
Birth: -
# and remove it
$ rmdir ./$'\x7e'
$ ls $'\x7e'
ls: cannot access '~': No such file or directory