检查共享网络驱动器中是否存在文件

时间:2017-04-13 17:48:58

标签: python macos mount

我正在尝试确定共享网络驱动器上是否存在目录。

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的公用文件夹,然后再检查该文件夹是否存在?

2 个答案:

答案 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")