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

如何使用Python或命令行自动执行ncftp的open、get -R等FTP操作命令

ncftp自动化执行操作的实现方案

方案一:命令行/shell脚本实现

你可以直接通过shell的重定向特性把批量命令传给ncftp执行,示例脚本如下:

#!/bin/bash
# 批量执行ncftp命令
ncftp << EOF
open ftp://你的FTP账号:你的FTP密码@FTP服务器地址
get -R 目标Folder
quit
EOF

如果只是要递归下载单个目录,可以直接用ncftp配套的ncftpget工具,一行命令即可完成:

ncftpget -R -u 你的FTP账号 -p 你的FTP密码 FTP服务器地址 本地保存路径 远程Folder路径

注意事项:

  • 若账号密码包含特殊字符,需要提前做转义处理
  • 不想明文写密码的话,可以先通过ncftp的书签功能把站点信息存在本地,直接open 书签名即可调用,无需填写账号密码
  • 注意open后的FTP地址前缀为ftp://,不要遗漏冒号

方案二:Python实现

方式1:调用subprocess执行ncftp命令

适合你已经习惯ncftp操作语法的场景:

import subprocess

# 填写你要执行的ncftp批量命令
ncftp_commands = """
open ftp://你的FTP账号:你的FTP密码@FTP服务器地址
get -R 目标Folder
quit
"""

# 启动ncftp进程并传入命令
process = subprocess.Popen("ncftp", stdin=subprocess.PIPE, shell=True)
process.communicate(input=ncftp_commands.encode("utf-8"))

方式2:使用Python内置ftplib实现(无需依赖ncftp)

如果环境里不能安装ncftp,可以直接用Python标准库的ftplib完成FTP操作,递归下载目录的示例代码如下:

from ftplib import FTP
import os

def recursive_download(ftp_obj: FTP, remote_dir: str, local_dir: str):
    # 本地创建对应目录
    os.makedirs(local_dir, exist_ok=True)
    ftp_obj.cwd(remote_dir)
    # 遍历远程目录所有内容
    for item in ftp_obj.nlst():
        try:
            # 尝试进入路径判断是否为文件夹
            ftp_obj.cwd(item)
            ftp_obj.cwd("..")
            # 递归下载子文件夹
            recursive_download(ftp_obj, item, os.path.join(local_dir, item))
        except Exception:
            # 非文件夹则直接下载文件
            local_file = os.path.join(local_dir, item)
            with open(local_file, "wb") as f:
                ftp_obj.retrbinary(f"RETR {item}", f.write)

if __name__ == "__main__":
    # 初始化FTP连接
    ftp = FTP("FTP服务器地址")
    ftp.login(user="你的FTP账号", passwd="你的FTP密码")
    # 递归下载目标文件夹
    recursive_download(ftp, "目标Folder", "./本地保存路径")
    ftp.quit()

额外说明:

  • 密码不要硬编码在脚本中,建议通过环境变量、加密配置文件等方式读取
  • 如果使用FTPS协议,将代码中的FTP替换为ftplib.FTP_TLS即可适配
  • 网络不稳定的场景可以自行添加上传重试、断点续传逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:01