在Python3.4(以及2.6)中,使用os.path.relpath cmd,如果我运行,我会得到不同的答案:
os.path.relpath("~/foo/bar.txt", "~")
比如果我跑
os.path.relpath("~/foo/bar.txt", "/home/<username>/")
(当然,我用我的用户名替换<username>
!)
即如果我在我的主目录中,在第一种情况下,我得到了
foo/bar.txt
(正如我所料),但在第二种情况下,我得到了
~/foo/bar.txt
这不是我所期望的,因为〜正是/home/<username>
。 (无论我是否在第二个arg中包含尾部'/',我在第二种情况下得到相同的结果。)
如果我在我的主目录的子目录中运行它,第二种情况会产生更奇怪的结果,比如〜/ Data /:
Data/~/foo/bar.txt
除非我弄错了,否则这是一个不存在的目录。
我可以找到解决方法,但是为什么会这样发生的原因是什么?我不认为这是一个错误,因为它已经存在了很长时间。
答案 0 :(得分:2)
type=date
实际上并不总是你的主目录 - 这只是你的shell的解释。您可以在任何地方创建名为~
的目录,就像创建名为~
的目录一样。由于orange
可能是一个普通的旧目录名,因此Python正在以这种方式对待它。
如果您希望Python将~
解释为主目录,就像shell一样,您需要告诉Python您要使用{{~
替换主目录的路径~
3}}在将目录名称传递给relpath
之前。