使用 SMB 下载文件

Downloading files with SMB

我正在尝试使用 pysmbclient 模块通过我的网络共享下载 CSV,但出现错误(如下所示)。服务器是Win2003 R2(DFS),是IPC$共享。我能够通过 Windows Explorer 在我的主帐户上验证 OK 并下载文件。唯一的区别是我的主帐户使用“Trans 2 Request, QUERY_PATH_INFO”提取它。

是否有 "pure 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 打开 AndX 请求,路径:\sas\results\summary.csv

SMB 93 打开 AndX 响应,错误:STATUS_OBJECT_NAME_INVALID

最有可能的问题是 \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()