在OSX中,我有一个已安装的网络共享,即/Volumes/tmp
'。我想获取共享位置的URL或服务器主机名。所以希望' cifs://10.0.1.103/tmp
'或服务器名称。不确定如何在OSX中的Python 2.7中执行此操作
答案 0 :(得分:0)
我在SO上找到了两个答案,建议使用df
:Get 'unc' path in OSX of mounted share和How do I get the server hostname from a mounted directory with cocoa/obj-c?
以下代码是第一个答案的改进版本(我的编辑显然未获批准):
import subprocess
df = subprocess.Popen(['df', '/Volumes/link/to/some/folder'],
stdout = subprocess.PIPE)
outputLine = df.stdout.readlines()[1]
uncPath = outputLine.split()[0]
print uncPath
警告:据我所知,这并没有给你协议(" smb",但也许这意味着以两个斜线开头的路径)我宁愿喜欢不涉及解析的解决方案(可能会因用户/服务器/共享名称中的空格而失败)。我的预感是,人们可以尝试向Finder询问这些信息(例如通过服务,或者使用pyobjc)。
BTW:smb://
和cifs://
似乎相同。使用OS X 10.9,我可以使用open
命令打开远程共享,并获得相同的df
输出和行为。如果您将协议放在uncPath
前面以获取完整的URL(或稍后可以与open
一起使用的内容),这可能会很有趣。另请注意,smb://
样式的URL也适用于Linux(在KDE和Gnome的文件管理器中)。
UPDATE:Linux上的df
具有cifs挂载的行为和输出格式,因此相同的代码适用于Linux!