You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3如何通过SMB协议匿名访问远程服务器共享文件?

Python3 访问匿名SMB共享的简便实现方法

嗨,我之前也碰到过类似的困扰,找了一圈终于发现Python3里其实有不少成熟的方案,完全能实现像Java那样简洁的操作!下面给你推荐两个最实用的库:

1. 使用 smbclient(最贴近你要的简便性)

这个库的设计思路和Python原生的文件操作API高度相似,支持直接通过SMB路径访问资源,在匿名访问的场景下甚至不需要额外配置认证信息,省心又高效。

首先安装库:

pip install smbclient

核心代码示例,完全能满足你获取共享文件操作权限的需求:

import smbclient

# 直接通过SMB路径访问共享目录,匿名访问无需额外认证
# 列出共享目录下的所有条目
for item in smbclient.scandir('smb://ftpsrv/public/'):
    print(f"名称: {item.name}, 是否为文件: {item.is_file()}")

# 读取共享内的文件内容
with smbclient.open_file('smb://ftpsrv/public/example.txt', 'r') as f:
    print(f.read())

这个库会自动处理匿名连接的逻辑,你只需要传入正确的SMB路径就行,便捷性和Java里那行代码几乎一致。

2. 使用 pysmb(功能更全面的老牌SMB库)

pysmb是一个成熟的SMB协议实现库,现在已经完全适配Python3,适合需要对SMB连接进行精细控制的场景。

安装库:

pip install pysmb

匿名访问的代码示例:

from smb.SMBConnection import SMBConnection

# 匿名连接:用户名和密码留空,本地机器名可以随便填一个标识
conn = SMBConnection('', '', 'my_local_pc', 'ftpsrv', use_ntlm_v2=True)
# 连接服务器,端口通常是139或445,根据服务器配置选择
conn.connect('ftpsrv', 139)

# 列出共享目录下的文件
file_list = conn.listPath('public', '/')
for file in file_list:
    print(file.filename)

# 记得用完后关闭连接
conn.close()

总结

如果追求最简便的实现,优先选smbclient,它的API更贴近Python原生的文件操作习惯,代码量少;如果需要对SMB连接进行更多自定义设置(比如超时、加密等),pysmb会是更好的选择。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:12