如何在路径上下文中使用“~”(波浪号)?

59

为了解决工作中的代码问题,我被告知要“使用相对于~的路径”。在文件路径中,~是什么意思?我如何制定一个相对于~的路径,并在Python中使用该路径来打开文件?


我可以想到两个完全正确但完全不同的答案,这取决于您正在使用什么进行Web应用程序开发。事实上,到目前为止给出的完全不同的答案涵盖了这些,但是没有人能确定哪个是正确的,或者是否有第三个答案。请编辑您的问题以包括所使用的技术。 - Jon Hanna
你修复了问题,如果可以贴一些示例代码就更好了。 - Mawg says reinstate Monica
3个回答

47

这里的$HOME变量在UNIX中代表用户的主目录,通常是/home/用户名

"Your home" 指的是执行像cd ~/MyDocuments/这样的命令的用户的主目录,即cd /home/执行cd命令的用户名/MyDocuments


1
~ 指向您的 $HOME,它可以是任何目录(即不一定是 /home/username)。 - Håvard S

19

除非您在编写Shell脚本或使用其他知道将$HOME的值替换为~的语言,否则文件路径中的波浪号没有特殊含义,将被视为任何其他非特殊字符。

如果您正在编写Shell脚本,则Shell不会解释波浪线,除非它们出现在参数的第一个字符中。换句话说,~/file将变成/path/to/users/home/directory/file,但./~/file将被按字面意思解释(即“在名为~的子目录下的名为file的文件”)。

在URL中使用波浪线作为用户主目录的缩写(例如http://www.foo.org/~bob),是从Unix中借用的约定。实现完全取决于服务器,因此您需要检查您的Web服务器文档以查看其是否具有任何特殊含义。


14
如果您正在使用pathlib来处理文件名,那么可以同时在Windows和Linux上使用(我是为了Windows答案而来到这里):
from pathlib import Path
p = Path('~').expanduser()
print(p)

1
请参考 https://dev59.com/z2kv5IYBdhLWcg3wlR31 了解为什么这是必要的。 - Karl Knechtel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接