如何在路径中使用'~'(波浪号)?

59 投票
3 回答
81608 浏览
提问于 2025-04-16 02:49

为了修复工作中的代码问题,有人告诉我“使用相对于~的路径”。那么,~在文件路径中是什么意思呢?我该如何创建一个相对于~的路径,并在Python中使用这个路径打开文件呢?

3 个回答

14

如果你在处理文件名的时候使用的是pathlib这个工具,那么在Windows和Linux系统上都可以使用它(我来这里是为了找Windows的解决方案):

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

除非你在写一个shell脚本或者使用其他一些能把$HOME替换成~的语言,否则在文件路径中,波浪号(~)没有特别的意思,它会被当作普通字符来处理。

如果你在写shell脚本,波浪号只有在作为参数的第一个字符时才会被解释。换句话说,~/file会被转换成/path/to/users/home/directory/file,但是./~/file会被字面理解(也就是说,它会被看作是“在当前目录下有一个叫file的文件,且这个文件在一个名为~的子目录中”)。

在网址中,波浪号被用作用户主目录的简写(例如,http://www.foo.org/~bob),这个用法是从Unix系统借来的。具体的实现完全依赖于服务器,所以你需要查看你所用的网络服务器的文档,看看它是否对波浪号有特别的解释。

47

这是你在UNIX系统中的$HOME变量,通常指的是/home/用户名

这里的“你的家”是指执行命令的用户的家,比如当你输入cd ~/MyDocuments/时,其实是在说cd /home/执行命令的用户/MyDocuments

撰写回答