How do I use '~' (tilde) in the context of paths?
Question:
To fix a problem in code for work, I was told to "use a path relative to ~". What does ~
mean in a file path? How can I make a path that is relative to ~
, and use that path to open files in Python?
Answers:
it is your $HOME
var in UNIX, which usually is /home/username
.
“Your home” meaning the home of the user who’s executing a command like cd ~/MyDocuments/
is cd /home/user_executing_cd_commnd/MyDocuments
Unless you’re writing a shell script or using some other language that knows to substitute the value of $HOME
for ~
, tildes in file paths have no special meaning and will be treated as any other non-special character.
If you are writing a shell script, shells don’t interpret tildes unless they occur as the first character in an argument. In other words, ~/file
will become /path/to/users/home/directory/file
, but ./~/file
will be interpreted literally (i.e., “a file called file
in a subdirectory of .
called ~
“).
Used in URLs, interpretation of the tilde as a shorthand for a user’s home directory (e.g., http://www.foo.org/~bob
) is a convention borrowed from Unix. Implementation is entirely server-specific, so you’d need to check the documentation for your web server to see if it has any special meaning.
If you are using pathlib for filenames then you can use on both Windows and Linux (I came here for a windows answer):
from pathlib import Path
p = Path('~').expanduser()
print(p)
To fix a problem in code for work, I was told to "use a path relative to ~". What does ~
mean in a file path? How can I make a path that is relative to ~
, and use that path to open files in Python?
it is your $HOME
var in UNIX, which usually is /home/username
.
“Your home” meaning the home of the user who’s executing a command like cd ~/MyDocuments/
is cd /home/user_executing_cd_commnd/MyDocuments
Unless you’re writing a shell script or using some other language that knows to substitute the value of $HOME
for ~
, tildes in file paths have no special meaning and will be treated as any other non-special character.
If you are writing a shell script, shells don’t interpret tildes unless they occur as the first character in an argument. In other words, ~/file
will become /path/to/users/home/directory/file
, but ./~/file
will be interpreted literally (i.e., “a file called file
in a subdirectory of .
called ~
“).
Used in URLs, interpretation of the tilde as a shorthand for a user’s home directory (e.g., http://www.foo.org/~bob
) is a convention borrowed from Unix. Implementation is entirely server-specific, so you’d need to check the documentation for your web server to see if it has any special meaning.
If you are using pathlib for filenames then you can use on both Windows and Linux (I came here for a windows answer):
from pathlib import Path
p = Path('~').expanduser()
print(p)