Lo que debería haberse hecho
Deberías haber actuado home=os.path.expanduser("~")
primero y luego os.path.join(home,"something")
. El ~
se trata como texto en Python y no se expande como lo hace en bash
otros shells.
$ 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/
Cómo deshacerse de él
Además de los métodos ya mencionados, podemos usar el valor hexadecimal ~
de la tabla de caracteres ascii, que a diferencia del real ~
no se expande al directorio de inicio del usuario en la línea de comandos (en caso de que se pregunte, cuando aparece tilde al comienzo de una palabra, se expande al directorio de inicio del usuario. Compare ls ~
y ls $'\x7e'
).
Así es como funcionaría:
# 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