前言

python拥有丰富且强大的类库,借助ftplib模块,可以很方便的实现FTP文件的上传和下载。

代码实例

# -*- coding: utf-8 -*-
from ftplib import FTP
import datetime, os, reclass FtpUtil(object):"""FTP客户端工具类常用方法ftp.set_debuglevel(2)  # 打开调试级别2,显示详细信息ftp.connect("IPaddress", "port")  # 连接的ftp sever和端口ftp.login("user", "password")  # 连接的用户名,密码ftp.cwd(pathname)  # 设置FTP当前操作的路径ftp.dir()  # 显示目录下所有目录信息ftp.nlst()  # 获取目录下的文件ftp.mkd(pathname)  # 新建远程目录ftp.pwd()  # 返回当前所在位置ftp.rmd(dirname)  # 删除远程目录ftp.delete(filename)  # 删除远程文件ftp.rename(oldname, newname)  # 将fromname修改名称为tonameftp.storbinaly("STOR filename.txt", file_handel, bufsize)  # 上传目标文件ftp.retrbinary("RETR filename.txt", file_handel, bufsize)  # 下载FTP文件ftp.set_debuglevel(0)  # 关闭调试模式ftp.quit()  # 退出ftp"""def __init__(self, host, username, password):self.port = 21self.bufsize = 1024self.conn = self.ftp_connect(host, username, password)def ftp_connect(self, host, username, password):"""建立连接:param host: 地址 :param username: 用户名 :param password: 密码:return: """ftp = FTP()# ftp.set_debuglevel(2) # 调试级别2 打印详细信息ftp.encoding = 'utf-8'  # 防止中文目录报错 GB2312ftp.connect(host, self.port)  # 填自己服务的端口号 一般是21ftp.login(username, password)  # 如果匿名登录可以使用空字符串# ftp.set_pasv(False)  # 主动模式# print(ftp.getwelcome()) # 打印欢迎信息return ftpdef upload_file(self, localpath, remotepath):"""上传文件:param localpath: 本地文件全路径:param remotepath: 远程文件全路径:return: """try:# 从本地上传文件到ftpfp = open(localpath, 'rb')self.conn.storbinary('STOR ' + remotepath, fp, self.bufsize)self.conn.set_debuglevel(0)fp.close()return Trueexcept Exception as e:print(e)return Falsedef upload_dir(self, local_dir, remote_dir):"""上传整个目录:param local_dir: 本地目录:param remote_dir: 远程目录:return:"""if not os.path.isdir(local_dir):print(local_dir, '不是目录')return Falseftp_path = remote_dir.rstrip('/')try:# 如果上传路径是文件夹,则创建目录self.conn.mkd(ftp_path)except:print(ftp_path, "已存在")# 进入本地目录local_files = os.listdir(local_dir)for file in local_files:local_file = os.path.join(local_dir, file)# 如果file本地路径是目录则递归上传文件if os.path.isdir(local_file):self.upload_dir(local_file, ftp_path + "/" + file)# 如果file本地路径是文件则直接上传文件else:self.upload_file(local_file, ftp_path + "/" + file)def download_file(self, remotepath, localpath):"""下载ftp文件:param remotepath: 远程文件全路径:param localpath: 本地文件全路径:return: """try:# 从ftp下载文件fp = open(localpath, 'wb')self.conn.retrbinary('RETR ' + remotepath, fp.write, self.bufsize)self.conn.set_debuglevel(0)fp.close()return Trueexcept Exception as e:print(e)return Falsedef download_dir(self, remote_dir, local_dir):"""下载整个目录,将 remote_dir 下载到 local_dir。:param local_dir: 本地目录地址:param remote_dir: 远程目录地址:return: 成功标识"""try:# 如果本地目录不存在,则创建if not os.path.exists(local_dir):os.makedirs(local_dir)remote_dir = remote_dir.rstrip('/')remote_names = self.conn.nlst(remote_dir)for file in remote_names:# 忽略隐藏文件if file not in [".", ".."]:remote = remote_dir + "/" + fileprint("正在下载", remote)if self.isDir(remote):  # 子文件夹递归self.download_dir(remote, os.path.join(local_dir, file))else:self.download_file(remote, os.path.join(local_dir, file))return Trueexcept:return Falsedef isDir(self, path):"""判断是否为目录 并不是很优雅:param path: 路径:return:"""try:self.conn.cwd(path)return Trueexcept:return Falsedef close_conn(self):"""关闭连接:return: """self.conn.quit()if __name__ == "__main__":ftp = FtpUtil("192.168.0.110", "user", "123456")# ftp.upload_file("D:\\LogProtocal.txt", "/test/a.txt")ftp.upload_dir("D:\\test", "/test/")# ftp.download_dir("/test/demo", "D:\\test")# downloadfile("/wait.jpg", "D:\\a.jpg")ftp.close_conn()

python实现FTP文件上传和下载相关推荐

  1. python连接ftp并上传、下载文件

    # -*- coding:utf-8 -*- """ Created on 2019年12月11日 :封装FTP文件上传与下载函数 @author: dch " ...

  2. java 中 FtpClient 实现 FTP 文件上传、下载

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 源代码大部分是网上找的,查来查去,找到几个可以用的例子,改来改去,揉合成现在这个样子. 一. jar ...

  3. ftp文件上传和下载

    ftp参数实体 public class FTPParameter { private String host;private int port;private String user;private ...

  4. 【SpringBoot】:springboot整合FTP文件上传与下载功能

    导入依赖包 <dependency><groupId>commons-net</groupId><artifactId>commons-net</ ...

  5. 使用API进行FTP文件上传和下载

    又有几天没发新贴了,刚才有点闲瑕,便随手写了一个使用FTP上传和下载文件的类. 类代码如下: Option Explicit'* *********************************** ...

  6. java中ftp删除文件,Java 实现ftp 文件上传、下载和删除

    实现FTP相关功能 1.下载相应的jar包 commons-net-3.6.jar 2.代码实现 import java.io.File; import java.io.FileInputStream ...

  7. C#编程, FTP文件上传、下载、重命名公共类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

  8. php从ftp下载文件到本地,php使用ftp实现文件上传与下载功能

    本文实例为大家分享了php ftp文件上传与下载的具体代码,供大家参考,具体内容如下 ftp文件上传 php自带有ftp操作的函数包,一个比较简单实现的ftp文件上传操作可以通过以下几个步骤来完成: ...

  9. php vsftpd文件上传类,php ftp文件上传函数(基础版)

    php ftp文件上传函数(基础版) 复制代码 代码如下: // 定义变量 $local_file = 'local.zip'; $server_file = 'server.zip'; // 连接F ...

  10. Python实现阿里云aliyun服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 Python实现阿里云服务器里的文件上传与下载 背景: 正文: 预备环境: 构想: 实现: 注意: 结尾 018.4.15 背景: 老实说,因为现实的各 ...

最新文章

  1. 工作一周了,紧张 + 累
  2. dotNET Core 3.X 使用 Autofac 来增强依赖注入
  3. 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
  4. 【NOIP 2016】组合数问题
  5. 陕西大数据产业建设总投资达500亿元
  6. mybatis连接池
  7. 孙鑫VC学习笔记:第七讲 对话框
  8. GBin1推荐:jQuery的滚动插件Waypoints
  9. 树形dp-智慧树下你和我
  10. Android studio做中国象棋,等级1(简单单人操作)
  11. 聊天机器人 java_java实现自动回复聊天机器人
  12. 学习3D建模电脑配置要求
  13. UE4学习大纲——从入门到入土
  14. 培养孩子讲故事的心得
  15. 【计算机图形学】着色简介
  16. # DZY Love Math 系列
  17. 冰峰王座完整的语音英文+中文解释!(修订版)
  18. 如何把老旧笔记本变成一部 Chromebook
  19. 『ACM』ACM部分训练日记(以此纪念和队友与FLS一起度过的快乐时光)
  20. 【JAVAWEB开发】带你零基础学JAVA项目(二嗨租车项目篇)

热门文章

  1. 解决 Elastic Search 的 Fast Vector Highlighting (FVH) 策略无法高亮 nested 数据类型
  2. matlab数字信号处理与应用 张德丰,MATLAB数字信号处理与应用
  3. springboot电影院订票售票系统毕业设计毕设作品开题报告开题答辩PPT
  4. 100套★商业源码★等你来下载(Delphi,VB,VC,PB,ASP,JSP)!!!
  5. Android应用程序开发以及背后的设计思想深度剖析(2)
  6. 文件白名单如何从行为管控走向信息安全
  7. 人狠话不多,细说大牛直播SDK之RTMP播放器和RTSP播放器
  8. 美图秀秀计算机教程,美图秀秀批处理软件详细图文版使用教程,一起学习吧
  9. Python编程 介绍(入门)
  10. 前端越早入行越吃香!【全新web前端开发视频教程】