52

我是一个网络应用程序开发菜鸟。我有一个打开文件并读取它的函数。不幸的是,测试服务器和生产服务器之间的目录结构不同。有人告诉我“使用相对于〜的路径”。但是,我无法在“~”上找到任何资源!

如何在路径的上下文中使用波浪号?

编辑:这是在 Python 中。我使用os.path.expanduser('~/path/in/home/area')解决了这个问题。

4

3 回答 3

44

它是您$HOME在 UNIX 中的 var,通常是/home/username.

“您的家”表示执行命令的用户的家,cd ~/MyDocuments/例如cd /home/user_executing_cd_commnd/MyDocuments

于 2010-08-15T18:14:59.970 回答
17

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

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

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

于 2010-08-15T20:46:31.027 回答
6

如果您使用 pathlib 作为文件名,那么您可以在 Windows 和 Linux 上使用(我来这里是为了获得 Windows 答案):

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

于 2019-01-06T12:32:13.877 回答