使用SMBConnect检索文件

时间:2018-12-20 17:02:29

标签: python smb

我有一个在Python 3,Ubuntu 16.04中运行的脚本,该脚本将平面Windows文本文件拉入Postgres。目前,我必须手动移动文本文件,并且要使其自动化。

如果我这样做:

conn = SMBConnection(credentials['username'],credentials['password'],
    credentials['host'],credentials['server'],use_ntlm_v2 = True)
assert conn.connect(credentials['server_IP'], 139)

files = conn.listPath(credentials['share_name'], "/")
for item in files:
    print(item.filename)
    if item.filename == req_file:
        print('Found a match!!')

conn.close()

我得到目标PC共享目录上文件的列表。它甚至可以告诉我何时找到我要查找的文件。

但是,如果我尝试检索该文件,则会告诉我它无法连接:

conn = SMBConnection(credentials['username'],credentials['password'],
    credentials['host'],credentials['server'],use_ntlm_v2 = True)
assert conn.connect(credentials['server_IP'], 139)

file_obj = tempfile.NamedTemporaryFile(mode='w+t', delete=False)
file_name = file_obj.name

xPath = credentials['source'] + '\\' + req_file

newX = conn.retrieveFile(credentials['source'], xPath, file_obj)

conn.close()

这给了我一个“无法连接”错误。如果我更改xPath以匹配listPath配置(凭据['share_name']),则会收到一个奇怪的错误:“ write()参数必须为字符串,而不是字节!我想将此文件的内容写入临时文件,因此我可以将其拉入数据库,谢谢!

0 个答案:

没有答案