如何在路径中使用'~'(波浪号)?
为了修复工作中的代码问题,有人告诉我“使用相对于~的路径”。那么,~
在文件路径中是什么意思呢?我该如何创建一个相对于~
的路径,并在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
。