<p>使用Python的旧版本也是个问题。如果你想坚持2.x,你将无法利用2010年初之后新增的新功能。在</p>
<p>其中一个特性是处理NTFS符号链接。这个功能是在2010年底3.2中添加的。(有关详细信息,请参见<a href="http://hg.python.org/cpython/file/3.2/Lib/ntpath.py#l321" rel="noreferrer">3.2</a>、<a href="http://hg.python.org/cpython/file/3.1/Lib/ntpath.py#l317" rel="noreferrer">3.1</a>和<a href="http://hg.python.org/cpython/file/2.7/Lib/ntpath.py#l210" rel="noreferrer">2.7</a>源文件。)</p>
<p>直到2009年之前,Python才开始处理链接。(IIRC,支持包含在6.0内核中,但是userland支持需要Vista/2008上的一个服务包;只有7/2008R2和更高版本才内置了它。另外,您需要一个足够新的MSVCRT来访问userland支持,而且Python有一个明确的策略,即不在小版本中升级到新的visualstudio版本。)</p>
<p>代码没有被移植回2.x的原因是<a href="http://www.python.org/dev/peps/pep-0404/" rel="noreferrer">that there will never be a 2.8</a>,而像2.7.3(或2.7.4)这样的bug修复版本没有获得新的特性,只有bug修复。在</p>
<p>这被报告为<a href="http://bugs.python.org/issue13143" rel="noreferrer">issue 13143</a>,预期的修复是更改2.7文档,以澄清在Windows上,<code>islink</code>总是返回{<cd2>}。在</p>
<p>因此,如果你想在Windows下读取NTFS符号链接,要么升级到python3.2+,要么你必须自己使用<a href="http://sourceforge.net/projects/pywin32/" rel="noreferrer">^{<cd3>}</a>、<a href="http://docs.python.org/2/library/ctypes.html" rel="noreferrer">^{<cd4>}</a>等来完成。在</p>
<p>或者,正如Martijn Pieters建议的那样,不要自己动手,而是使用一个像<a href="https://bitbucket.org/jaraco/jaraco.windows" rel="noreferrer">^{<cd5>}</a>这样的第三方库来完成和/或借用<a href="https://bitbucket.org/jaraco/jaraco.windows/src/default/jaraco/windows/filesystem/__init__.py" rel="noreferrer">their code</a>。在</p>
<p>或者,如果你真的愿意,可以借用3.2源代码并围绕它构建一个C扩展模块。如果你从<code>ntpath</code>到<code>os</code>再到{<cd8>}(实际上是<code>posixmodule.c</code>),我相信它的核心在<a href="http://hg.python.org/cpython/file/3.2/Modules/posixmodule.c#l1719" rel="noreferrer">^{<cd10>} and ^{<cd11>}</a>。在</p>