我有一个在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()参数必须为字符串,而不是字节!我想将此文件的内容写入临时文件,因此我可以将其拉入数据库,谢谢!