擅长:python、mysql、java
<p>您可以调用<code>mount</code>命令并分析其输出以查找路径中最长的公共前缀,也可以使用<code>stat</code>系统调用获取文件所在的设备,并沿树向上移动,直到到达其他设备。</p>
<p>在Python中,<code>stat</code>可以按如下方式使用(未经测试,可能必须扩展以处理符号链接和特殊的东西,如union mounts):</p>
<pre><code>def find_mount_point(path):
path = os.path.abspath(path)
orig_dev = os.stat(path).st_dev
while path != '/':
dir = os.path.dirname(path)
if os.stat(dir).st_dev != orig_dev:
# we crossed the device border
break
path = dir
return path
</code></pre>
<p><strong>编辑:我刚才才知道<code>os.path.ismount</code>。这大大简化了事情。</p>
<pre><code>def find_mount_point(path):
path = os.path.abspath(path)
while not os.path.ismount(path):
path = os.path.dirname(path)
return path
</code></pre>