web-dev-qa-db-fra.com

Comment utiliser '~' (tilde) dans le contexte des chemins?

Je suis un noob de développement d'applications web. J'ai une fonction qui ouvre un fichier et le lit. Malheureusement, les structures de répertoires entre les serveurs de test et de production diffèrent. On m'a dit d'utiliser "un chemin relatif à ~". Je n'ai cependant pas pu trouver de ressources sur le '~'!

Comment utiliser le caractère tilde dans le contexte des chemins?

EDIT: Ceci est en Python. J'ai résolu le problème en utilisant os.path.expanduser ().

42
captcadaver

c'est votre $HOME var sous UNIX, qui est généralement /home/username.

"Votre maison" signifie la maison de l'utilisateur qui exécute une commande telle que cd ~/MyDocuments/ est cd /home/user_executing_cd_commnd/MyDocuments

38
dierre

Sauf si vous écrivez un script Shell ou utilisez un autre langage qui sait substituer la valeur de $HOME à ~, les tildes des chemins de fichiers n'ont aucune signification particulière et seront traités comme tout autre caractère non spécial.

Si vous écrivez un script Shell, les shells n'interprètent pas les tildes, sauf s'ils apparaissent comme le premier caractère d'un argument. En d'autres termes, ~/file deviendra /path/to/users/home/directory/file, mais ./~/file sera interprété littéralement (c'est-à-dire "un fichier appelé file dans un sous-répertoire de . appelé ~").

Utilisée dans les URL, l'interprétation du tilde en tant que raccourci pour le répertoire de base d'un utilisateur (par exemple, http://www.foo.org/~bob) est une convention empruntée à Unix. L'implémentation est entièrement spécifique au serveur, vous devez donc consulter la documentation de votre serveur Web pour voir si elle a une signification particulière.

15
Blrfl

Si vous utilisez pathlib pour les noms de fichiers, vous pouvez utiliser à la fois Windows et Linux (je suis venu ici pour une réponse Windows):

pythonfrom pathlib import Pathp = Path('~').expanduser()print(p)

0
hum3