2013-03-30 71 views
3

os有一个函数os.path.islink(PATH)它检查PATH是否符号链接。但是,如果PATH是某个目录的符号链接,则会失败。相反 - python认为它是目录(os.path.isdir(PATH))。那么,如何检查目录是否是链接?检查目录是否符号链接?

编辑

这里是bash认为:

~/scl/bkbkshit/Teaching: file 2_-_Classical_Mechanics_\(seminars\) 
2_-_Classical_Mechanics_(seminars): symbolic link to `/home/boris/wrk/tchn/2_-_Classical_Mechanics_(seminars)' 

这里就是python认为:

In [8]: os.path.islink("2_-_Classical_Mechanics_(seminars)/") 
Out[8]: False 
+6

两个'isdir'和'islink'返回TRUE;有关Python 2.7.3指向目录的符号链接/ OS X.莫非你发布你的代码? – zigg

+2

问题是附加斜线('/')? –

+1

@NiclasNilsson:是的。它是。 – Adobe

回答

11

这是因为你把一个斜线在文件名的末尾。

os.path.islink("2_-_Classical_Mechanics_(seminars)/") 
               ^

尾随斜杠导致OS跟随链接,以便结果是不是链接的目标目录。如果删除斜杠,islink将返回True

同样的事情在发生猛砸以及:

[email protected]:~$ file aaa 
aaa: symbolic link to `/etc' 
[email protected]:~$ file aaa/ 
aaa/: directory