2017-04-24 1 views
2

J'essaie de télécharger un fichier CSV via mon partage réseau en utilisant le module pysmbclient, mais j'obtiens une erreur (ci-dessous). Le serveur est Win2003 R2 (DFS), c'est un partage IPC $. Je suis en mesure d'authentifier OK et télécharger le fichier via l'Explorateur Windows sur mon compte principal. La seule différence est mon compte principal le tire avec "Trans 2 Request, QUERY_PATH_INFO".Téléchargement de fichiers avec SMB

Existe-t-il une façon «pure python» de le faire sur 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 Ouvrir demande AndX, chemin: \ sas \ résultats \ summary.csv

SMB 93 Ouvrez AndX Réponse, erreur: STATUS_OBJECT_NAME_INVALID

Répondre

2

Très probablement le problème est que \r est en cours d'interprétation comme a control character.

changer le chemin:

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

Vous devriez aussi, si possible, éviter except: et à la place sur les exceptions spécifiques.

Vous pouvez également utiliser une clause finally: ici:

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

Je les ai changé tous deux barres obliques et qui ont travaillé, merci! Il est étrange que Wireshark l'interprète comme un antislash littéral. – LampShade

+0

Vous êtes les bienvenus. C'est un comportement normal. Vous ne pouvez pas faire cela non plus dans Python. – bernie