Как использовать «~» (Tilde) в контексте пути?

StackOverflow https://stackoverflow.com/questions/3488603

  •  28-09-2019
  •  | 
  •  

Вопрос

Я разработку веб-приложений 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top