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

跨Windows、macOS、Linux平台的Python网络共享文件读取方案问询

跨平台Python读取网络共享文件的最优方案

一、使用SMB协议直接访问(推荐)

SMB是Windows、macOS、Linux均支持的通用网络文件共享协议,无需依赖本地挂载操作,直接通过网络连接共享目录,完美适配跨平台开发与服务器部署场景。

方案1:使用pysmb库

pysmb是成熟的SMB客户端库,支持SMBv1/SMBv2/SMBv3,兼容绝大多数共享服务器。

  1. 安装依赖:
pip install pysmb
  1. 代码示例(列出文件+读取内容):
from smb.SMBConnection import SMBConnection

# 共享服务器配置
server_name = "our.server.de"
share_name = "data"
username = "your_username"  # 匿名访问可设为None
password = "your_password"  # 匿名访问可设为None
client_id = "python-client"  # 自定义客户端标识

# 建立SMB连接
conn = SMBConnection(username, password, client_id, server_name, use_ntlm_v2=True)
assert conn.connect(server_name, 139)  # SMB默认端口为139或445

# 列出目标目录下的文件
file_list = conn.listPath(share_name, "/path/to/files")
for item in file_list:
    if not item.isDirectory:
        print(item.filename)

# 读取远程文件到本地
local_file = open("local_example.txt", "wb")
conn.retrieveFile(share_name, "/path/to/files/example.txt", local_file)
local_file.close()

# 关闭连接
conn.close()

方案2:使用smbprotocol库

smbprotocol由微软官方维护,仅支持SMBv2/SMBv3,安全性更高,适配现代网络环境。

  1. 安装依赖:
pip install smbprotocol
  1. 代码示例:
from smbprotocol.connection import Connection
from smbprotocol.session import Session
from smbprotocol.tree import TreeConnect

# 服务器与共享配置
server = "our.server.de"
share = "data"
username = "your_username"
password = "your_password"

# 建立底层连接
conn = Connection(server, 445)
conn.connect()

# 认证会话
session = Session(conn)
session.authenticate(username, password)

# 连接共享目录
tree = TreeConnect(session, f"\\\\{server}\\{share}")
tree.connect()

# 列出目录内容
files = tree.list_directory("/path/to/files")
for file_info in files:
    print(file_info["file_name"])

# 读取远程文件内容
with tree.open_file("/path/to/files/example.txt", "r") as remote_file:
    content = remote_file.read()
    print(content.decode("utf-8"))

# 清理资源
tree.disconnect()
session.logoff()
conn.close()

二、NFS共享场景补充

如果你的网络共享基于NFS协议(常见于Linux服务器集群),可使用pynfs库直接访问:

  1. 安装依赖:
pip install pynfs
  1. 简单示例:
from nfs import NFS

# 连接NFS服务器
nfs = NFS("nfs.server.de", 2049)
nfs.mount("/export/data")

# 列出目标目录文件
files = nfs.listdir("/path/to/files")
print(files)

# 读取文件内容
content = nfs.read("/path/to/files/example.txt")
print(content.decode("utf-8"))

# 卸载连接
nfs.umount()

三、为什么不推荐系统判断+本地挂载?

  • 依赖手动挂载操作,团队成员易出现挂载路径不一致、忘记挂载等问题
  • 跨平台路径格式差异大,代码维护成本高
  • 服务器环境(如Linux)可能无挂载共享目录的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:33:25