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

如何使用Python将Windows文件夹内所有文件上传到SFTP目录

问题解决办法

报错原因

你调用的pysftp.Connection.put()方法仅支持上传单个本地文件,直接传入文件夹路径files\csv时,系统会尝试将文件夹作为普通文件读取,因此抛出PermissionError: [Errno 13] Permission denied报错。

实现逻辑(含空文件夹跳过需求)

你需要先遍历本地文件夹筛选出所有待上传的文件,判断文件数量非空后再逐个上传,完整代码如下:

import os
import pysftp

with pysftp.Connection(host, username, password) as sftp:
    localpath = r'files\csv'
    remotepath = '/2021/November'
    
    # 筛选本地文件夹下的所有文件,排除子文件夹
    local_files = [f for f in os.listdir(localpath) if os.path.isfile(os.path.join(localpath, f))]
    
    # 文件夹为空直接跳过执行
    if not local_files:
        exit()
    
    # 可选:如果远程目录不存在,先创建
    if not sftp.exists(remotepath):
        sftp.makedirs(remotepath)
    
    # 逐个上传文件
    for file_name in local_files:
        local_file_path = os.path.join(localpath, file_name)
        remote_file_path = f"{remotepath}/{file_name}"
        sftp.put(local_file_path, remote_file_path)

补充说明

  • 如果需要同时上传子目录内的文件,可以替换os.listdir遍历逻辑为os.walk递归遍历
  • 批量上传也可以直接使用pysftp封装的put_r方法实现目录递归上传,调用前同样先做本地文件存在性判断即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:03