使用Python Samba客户端从Linux向Windows共享盘复制文件时出现连接失败问题求助
看起来你已经搞定了SMB连接的基础部分,但storeFile()的调用细节上可能踩了坑,我帮你梳理几个最可能的原因和修复方法:
1. 共享路径参数格式完全错了
这是最常见的问题!storeFile()的第一个参数要求的是共享名称(就是你listShares()返回的那些共享名),而不是完整的UNC路径。你现在传的\\\\fs01\\data\\folder1是Windows里的完整路径,但这个方法不认这个格式。
举个例子,如果你的共享名是data,那第一个参数只需要传'data',第二个参数才是共享目录下的文件路径(包含文件名)。
错误写法:
connection.storeFile('\\\\fs01\\data\\folder1', file1, file_obj)
修正后的正确写法:
connection.storeFile('data', 'folder1/file1', file_obj)
(Python里用正斜杠更省心,当然用双反斜杠folder1\\file1也可以)
2. 目标文件夹没有写入权限
你能列出共享不代表你能往里面写文件。去Windows服务器上检查两个地方:
- 共享权限:确认
user1账号在data共享上有写入权限 - NTFS权限:
data共享对应的本地文件夹下,folder1目录也要给user1分配写入/修改权限
3. 文件打开模式不对
你用open(filename,"r")是只读文本模式,如果传输的是二进制文件(比如图片、exe、压缩包),肯定会出问题。哪怕是文本文件,用二进制模式打开也能避免编码转换带来的意外:
file_obj = open(filename, "rb")
4. 尝试换个端口连接
你现在连的是139端口(NetBIOS over TCP),有些Windows服务器可能默认用445端口(直接SMB)。试试把连接端口改成445:
connection.connect(ip, 445)
内容的提问来源于stack exchange,提问作者Digital Da
相关产品推荐
相关产品推荐

