我正在尝试通过python将smb网络共享安装到桌面上,我不希望将共享安装在一个文件夹中,但是所有其他已安装的共享都是(如果我使用'connect to Server', OSX我希望我的python挂载安装在同一位置)。 这是当前的python代码:
directory = os.path.expanduser('~/Desktop')
directory = os.path.normpath(directory)
os.system("mount_smbfs //server/servershare " + directory)
当我运行上述内容时,会发生一些奇怪的事情。在finder中,我的房子,它有一个房子的图标和我的用户名更改为安装名称,它将其搞砸了。
答案 0 :(得分:2)
如果你想这样做,这就像kosher,类似Finder的方式,通过Python通过shell在AppleScript中完成:
os.system("osascript -e 'mount volume \"smb://server/servershare\"'")
你不需要任何其他东西 - 没有挂载点。这与选择" Connect To Server"相同,生成的卷将按预期显示在/ Volumes中。
如果您需要指定用户名和/或密码,可以这样做:
os.system("osascript -e 'mount volume \"smb://server/servershare\" \
as user name \"myUserName\" with password \"myPassword\"'")
如果您想使用mount_smbfs
以原始方式执行此操作,我认为您希望directory
成为您在/Volumes
中创建的文件夹,例如/Volumes/mySmbVolume
,虽然我从未试图这样做过。在您编写完成后,您将使用您正在安装的卷替换实际的桌面文件夹。但是,您可以在Desktop中创建一个文件夹,并将其用于directory
,它可能会起作用。但是,我这样做是因为我用通常的Mac做事方式把它写成最标准的。
答案 1 :(得分:0)
如果您还想在桌面上打开一个 Finder 窗口,那么这是另一种解决方案,我自己也使用过。
import os
os.system("open -g smb://Server/Share")
#perform a timeout loop checking for finished attachment
if os.path.exists("/Volumes/Share"):
# I use a for loop around this to sleep a second and try 20 times.
# it needs to handle waiting for a server to wake from sleep and then attach
#Do my important functions
os.system("umount /Volumes/Share")
优点是:
缺点是:
umount
-g
将窗口留在桌面上的其他窗口后面,但如果您想隐藏在后台运行,则首选 Ivan X 的解决方案。另一方面,如果您想要一个新的 Finder 窗口,那么这很有效。