Как использовать «~» (Tilde) в контексте пути?
Вопрос
Я разработку веб-приложений Noob. У меня есть функция, которая открывает файл и читает его. К сожалению, структуры каталогов между тестовыми и производственными серверами различаются. Мне сказали «использовать путь относительно ~». Я не смог найти какие-либо ресурсы на «~», хотя!
Как я могу использовать персонаж Tilde в контексте пути?
Редактировать: это в Python. Я исправил проблему, используя OS.Path.Expanduser ('~ / Путь / В / Главная / Область').
Решение
это твое $HOME
var в Unix, который обычно /home/username
.
«Ваш дом» означает дом пользователя, который выполняет команду, как cd ~/MyDocuments/
является cd /home/user_executing_cd_commnd/MyDocuments
Другие советы
Если вы не пишете скрипт оболочки или используете другой язык, который знает, чтобы заменить значение $HOME
за ~
, тилды в файловых путях не имеют особого значения и будут рассматриваться как любой другой неспециальный характер.
Если вы пишете скрипт оболочки, снаряды не интерпретируют тильды, если они не встречаются в качестве первого символа в аргументе. Другими словами, ~/file
станет /path/to/users/home/directory/file
, но ./~/file
будет интерпретироваться буквально (т. е. файл под названием file
в подкаталоге .
называется ~
").
Используется в URL, интерпретация Tilde в качестве сокращения для домашнего каталога пользователя (например, http://www.foo.org/~bob
) - это конвенция, заимствованная у UNIX. Реализация является полностью конкретной сервером, поэтому вам нужно будет проверить документацию для вашего веб-сервера, чтобы увидеть, имеет ли он особый смысл.
Если вы используете PathLib для имени файлов, вы можете использовать на обоих Windows, так и в Linux (я пришел сюда для ответа Windows):
python
from pathlib import Path
p = Path('~').expanduser()
print(p)