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

如何使用Python Paramiko从SFTP服务器下载目录下特定文件

Paramiko实现SFTP指定文件下载方案

核心逻辑

你已经调通了目录全量文件列表获取逻辑,不需要改动现有连接、认证部分的代码,只需要在遍历文件列表环节增加自定义筛选规则,仅对命中规则的文件调用下载接口即可。
常见的筛选规则包括:精确匹配文件名、匹配文件后缀、匹配文件名关键词、按文件大小/修改时间过滤、正则匹配文件名。

可复用代码示例

import paramiko
import os
import posixpath  # 用于拼接远程SFTP路径,兼容Windows本地开发环境

# --------------- 以下连接部分可直接替换为你已调通的代码 ---------------
transport = paramiko.Transport(('SFTP服务器地址', 22))
transport.connect(username='账号', password='密码')
sftp = paramiko.SFTPClient.from_transport(transport)

# 路径配置
remote_target_dir = '/远程目标目录路径'
local_save_dir = '/本地文件存储目录'
os.makedirs(local_save_dir, exist_ok=True)

# --------------- 自定义筛选规则配置 ---------------
# 1. 精确匹配文件名:只下载列表内的文件
target_exact_files = {'daily_report_2024.csv', 'system_config.json'}
# 2. 后缀匹配:只下载指定后缀的文件
allow_suffix = ('.csv', '.log', '.xlsx')
# 3. 关键词匹配:只下载文件名包含指定关键词的文件
contain_keyword = '2024Q3'

# 遍历目录下所有条目
for entry in sftp.listdir_attr(remote_target_dir):
    # 跳过子目录,仅处理普通文件
    if entry.st_mode & 0o40000:
        continue
    filename = entry.filename
    is_match = False

    # 按需启用筛选规则,多规则可通过and/or组合
    # 规则1:精确文件名匹配
    if filename in target_exact_files:
        is_match = True
    # 规则2:后缀匹配
    # if filename.endswith(allow_suffix):
    #     is_match = True
    # 规则3:关键词匹配
    # if contain_keyword in filename:
    #     is_match = True
    # 规则4:正则匹配示例(需要先import re)
    # if re.match(r'report_\d{8}\.csv', filename):
    #     is_match = True

    # 命中规则才执行下载
    if is_match:
        remote_file_path = posixpath.join(remote_target_dir, filename)
        local_file_path = os.path.join(local_save_dir, filename)
        sftp.get(remote_file_path, local_file_path)
        print(f"指定文件下载完成:{filename}")

# 关闭连接
sftp.close()
transport.close()

注意事项

  • 拼接远程路径时优先用posixpath.join,避免本地是Windows环境时,os.path.join生成带反斜杠的路径,导致SFTP侧找不到文件
  • 如果需要遍历多层嵌套子目录,遇到目录条目时递归执行遍历逻辑即可,筛选、下载部分的代码不需要修改
  • 大文件下载可给sftp.get()传入callback参数,实时获取已下载字节数实现进度展示,不影响筛选逻辑
  • 如果需要按文件修改时间筛选,直接读取entry.st_mtime字段做时间判断即可,和本地文件的属性判断逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:27:36