我正在尝试确定共享网络驱动器上是否存在目录。
import os
if(os.path.exists('/Volumes')):
print 'path exists'
else:
print 'path does not exist'
这样可以正常但在传递这个参数时失败:'/ Volumes / A21 \'s \ Public \ Folder'
这对我有意义,因为在我打开Finder上的共享驱动器之前,这不存在。所以我想我需要先安装,我先从命令行尝试 -
mount_smbfs smb://guest@server/A21's Public Folder
这失败了,所以我不确定传入os.path.exists参数的内容。理想情况下,我希望能够先装入/ Volumes / A21的公用文件夹,然后再检查该文件夹是否存在?
答案 0 :(得分:0)
问题可能是您复制并粘贴字符串。我之前遇到过这个问题。处理文件路径时,最好使用os join,遇到的问题较少
尝试使用:
os.path.join
例如:
import os
pathtodrive = os.path.join("Volumes", "A21's Public Folder")
if (os.path.exists(pathtodrive)):
print 'path exists'
else:
print 'path does not exist'
答案 1 :(得分:0)
在Python
中,您基本上会像在Bash
安装共享时那样执行相同的程序:
#!/usr/bin/python
import os
home = os.path.expanduser("~")
mnt = home + "/mnt"
if not os.path.exists(mnt): os.makedirs(mnt)
os.chdir(mnt)
os.system("mount_smbfs //username@server._smb._tcp.local/share " + mnt)
这样做是将挂载点设置为用户主目录中的mnt
;如果文件夹不存在则会创建它。然后该命令将更改为该目录并安装smb
。您需要输入密码,或者如果您想要一种非常安全的方式,那么您始终可以在命令中包含密码(例如username:password
)。
挂载共享后,您可以检查文件是否存在:
os.path.exists(mnt + "/path/to/file")