2017-04-24 93 views
2

我試圖通過我的網絡共享使用pysmbclient模塊下載CSV,但出現錯誤(如下所示)。服務器是Win2003 R2(DFS),它是一個IPC $共享。我可以通過身份驗證,然後通過我的主帳戶上的Windows資源管理器下載文件。唯一的區別是我的主帳戶將其與「Trans 2請求,QUERY_PATH_INFO」拉在一起。使用SMB下載文件

有沒有一種「純粹的python」方式在SMB上做到這一點?

import smbclient 

userID = 'user' 
password = 'password' 
server_name = 'usa03' 
ip = '10.1.13.211' 

try: 
    smb = smbclient.SambaClient(server=server_name, ip=ip, share="share", username=userID, password=password, domain='biz') 
    f = smb.open('\sas\results\summary.csv') 
    data = f.read() 
    f.close() 
except: 
     print "No go" 
smb.close() 

SMB 286開放和X請求,路徑:\ SAS \​​結果\ summary.csv

SMB 93開放和X響應,錯誤:STATUS_OBJECT_NAME_INVALID

回答

2

最有可能的問題是,\r被解釋如a control character

更改路徑:

f = smb.open('\\sas\\results\\summary.csv') 

你也應該,如果可能的話,避免except:而是捕獲特定的異常。

你也可以在這裏使用一個finally:條款:

try: 
    smb = smbclient.SambaClient(server=server_name, ip=ip, share="share", 
           username=userID, password=password, domain='biz') 
    with smb.open('\\sas\\results\\summary.csv') as f: 
     data = f.read() 
except SomeError: # not literally SomeError but an error you might encounter 
    print "No go" 
finally: 
    smb.close() 
+1

我改變了他們所有雙斜線和合作,謝謝! Wireshark把它解釋爲字面反斜槓是很奇怪的。 – LampShade

+0

非常歡迎。這是正常的行爲。你不能在Python中做到這一點。 – bernie