2017-04-13 123 views
0

我試圖確定目錄是否存在於共享網絡驅動器上。檢查共享網絡驅動器中是否存在文件

import os 

if(os.path.exists('/Volumes')): 
print 'path exists' 
else: 
print 'path does not exist' 

這工作得很好,但這種傳遞這樣的說法時失敗:「/卷/ A21 \的\ PUBLIC \文件夾'

這對我來說很有意義,因爲這不存在,直到我打開Finder上的共享驅動器。所以我想我需要先安裝,我已經在命令行中第一次嘗試 -

mount_smbfs smb://[email protected]/A21's Public Folder 

這種失敗,所以我不能確定在什麼以通爲os.path.exists說法。理想情況下,我希望能夠首先安裝到/ Volumes/A21的公用文件夾,然後再檢查該文件夾是否存在?

+0

你到底是什麼安裝它?看起來你根本沒有安裝它......你需要一個安裝點。 –

+0

這是正確的,我之前沒有安裝。所以我在if語句之前添加了這行 - os.system(「osascript -e'mount volume \」smb://A21._smb._tcp.local/A21 \ \ Public \ Folder \「'」)但是由於報價標記不正確而失敗。我認爲這將使該文件夾被訪問下/卷? – A21

+0

你可以把它放在'/ Volumes'下,但我更喜歡用戶主目錄,因爲你知道它具有適當的權限;你總是可以從'/ Volumes'創建一個符號鏈接到'〜/ mnt',我想也是這樣...... –

回答

0

問題可能是您複製並粘貼字符串。我以前遇到過這個問題。當文件路徑處理,最好使用操作系統加入您遇到的問題較少

嘗試使用:

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' 
+0

我試過了,但沒有奏效。我認爲問題在於,它甚至沒有識別沒有安裝的網絡驅動器。 – A21

+0

您是否嘗試過使用異常來查看它產生的錯誤? – Davidhall

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 //[email protected]_smb._tcp.local/share " + mnt) 

這是將用戶主目錄中的掛載點設置爲mnt;如果該文件夾不存在,則會創建它。然後該命令變成該目錄並掛載smb。你需要輸入你的密碼,或者如果你想要一個非安全的方式,那麼你總是可以在命令中包含密碼(例如username:password)。

一旦你的份額被安裝,你可以檢查文件是否存在使用:

os.path.exists(mnt + "/path/to/file") 
+0

我收到一個掛載錯誤,說沒有這樣的文件或目錄:/ Users/username/mnt。至少通過查找器,我可以正常連接客人。我是否還需要指定用戶名? – A21

+0

@ A21:是「用戶名」是您的用戶的名稱,因此請用您的帳戶替換該用戶的任何實例。 –

+0

不幸的是我無法連接到該服務器而不是客人。 – A21

相關問題