Как использовать «~» (тильда) в контексте путей? - PullRequest
42 голосов
/ 15 августа 2010

Я новичок в разработке веб-приложений.У меня есть функция, которая открывает файл и читает его.К сожалению, структуры каталогов между тестовым и рабочим серверами различаются.Мне сказали «использовать путь относительно ~».Однако я не смог найти никаких ресурсов в '~'!

Как использовать символ тильды в контексте путей?

РЕДАКТИРОВАТЬ: Это на Python.Я исправил проблему, используя os.path.expanduser ().

Ответы [ 3 ]

38 голосов
/ 15 августа 2010

это ваш $HOME var в UNIX, который обычно равен /home/username.

«Ваш дом» означает дом пользователя, выполняющего команду типа cd ~/MyDocuments/, равный cd /home/user_executing_cd_commnd/MyDocuments

15 голосов
/ 16 августа 2010

Если вы не пишете сценарий оболочки или не используете какой-либо другой язык, который знает, как подставить значение $HOME для ~, тильды в путях к файлам не имеют специального значения и будут рассматриваться как любые другие не специальные символы .

Если вы пишете сценарий оболочки, оболочки не интерпретируют тильды, если они не появляются в качестве первого символа в аргументе. Другими словами, ~/file станет /path/to/users/home/directory/file, но ./~/file будет интерпретироваться буквально (то есть "файл с именем file в подкаталоге . с именем ~").

Используемая в URL-адресах интерпретация тильды как сокращения для домашнего каталога пользователя (например, http://www.foo.org/~bob) является соглашением, заимствованным из Unix. Реализация полностью зависит от сервера, поэтому вам нужно проверить документацию для своего веб-сервера, чтобы узнать, имеет ли она какое-либо особое значение.

1 голос
/ 06 января 2019

Если вы используете pathlib для имен файлов, то вы можете использовать как в Windows, так и в Linux (я пришел сюда для ответа Windows):

python from pathlib import Path p = Path('~').expanduser() print(p)

...