擅长:python、mysql、java
<p>我想您正在寻找一种方法来找到文件的规范(*)路径。即删除了<code>..</code>、<code>.</code>和符号链接。这就是<a href="http://docs.python.org/2/library/os.path.html#os.path.realpath" rel="nofollow">^{<cd3>}</a>的角色</p>
<pre><code>>>> os.path.realpath(".")
'/home/sylvain'
>>> os.path.realpath("..")
'/home'
>>> os.path.realpath("./Documents/../..")
'/home'
</code></pre>
<p><code>realpath</code>将遵循symlink并“reduce”路径:</p>
^{pr2}$
<p>。。。然而<code>normpath</code>很容易被滥用:</p>
<pre><code>>>> os.path.normpath("./Documents/../z/..")
'.'
</code></pre>
<p>一旦有了规范名称,就可以很容易地检查用户是否应该有权访问请求的文件。比方说和白名单比较。在</p>
<hr/>
<p>(*)一个文件可能有不同的路径,但只有一个规范路径。<br/>
有关详细信息,请参见<a href="http://www.xyzws.com/Javafaq/what-is-the-difference-between-absolute-relative-and-canonical-path-of-file-or-directory/60" rel="nofollow">http://www.xyzws.com/Javafaq/what-is-the-difference-between-absolute-relative-and-canonical-path-of-file-or-directory/60</a>。在</p>