根本问题是您使用的Python版本太旧。如果您坚持使用2.x,则将无法使用2010年初以后添加的新功能。
这些功能之一是处理NTFS符号链接。该功能是在3.2中加入在2010年底(见3.2,3.1,以及2.7源的信息。)
Python在此之前不处理NTFS符号链接的原因是直到2009年末才出现这种情况。(IIRC,6.0内核中已包含支持,但对用户态的支持需要Vista / 2008上的Service Pack;仅7 / 2008R2和此外,您需要一个足够新的MSVCRT才能访问该用户区支持,并且Python明确规定不要在次要版本中升级到新的Visual Studio版本。)
代码没有移植回2.x的原因是永远不会有2.8,并且像2.7.3(或2.7.4)这样的bug修复版本没有新功能,只有bug修复了。
这已被报告为问题13143,并且预期的修复是更改2.7文档以阐明islink
始终False
在Windows上返回的问题。
所以,如果你想阅读Windows下NTFS符号链接,要么升级到Python 3.2+,或者你必须使用win32api
,ctypes
等自己做。
或者,如Martijn Pieters所建议的那样,不要自己做,而是使用像jaraco.windows
这样的第三方库和/或借用他们的代码。
或者,如果您确实想要,可以从3.2源代码中借用代码并围绕它构建一个C扩展模块。如果从跟踪下来ntpath
到os
到nt
(实际上是posixmodule.c
),我相信它的胆量都在win32_xstat_impl
和win32_xstat_impl_w
。