一、ftplib介绍
Python中默认安装的ftplib模块定义了FTP类,可用来实现简单的ftp客户端,用于上传或下载文件。
Python 2.7系列官方文档: https://docs.python.org/2/library/ftplib.html
Python 3.5系列官方文档:https://docs.python.org/3.5/library/ftplib.html
Python 3.6系列官方文档:https://docs.python.org/3.6/library/ftplib.html
1、连接服务器:
ftp=FTP() #设置变量
ftp.connect(“IP”,”port”) #连接的ftp sever和端口
ftp.login(“user”,”password”)#连接的用户名,密码如果匿名登录则用空串代替即可
2、上传文件:
fp=open(‘E:/test.xlsx’,’rb’)
cmd=’STOR filepath/test.xlsx’
ftp.storbinary(cmd, fp)
storbinary是以二进制形式上传文件。
cmd: STOR命令,是FTP的一个命令,后面需要加上保存文件的路径及文件名
fp: 一个打开的文件对象,‘rb’,以二进制形式打开文件
3、下载文件:
ftp.nlst(path) #获取目录下的文件
file_handle=open(filename,”wb”).write #以写模式在本地打开文件
ftp.retrbinaly(“RETR filename.txt”,file_handle) #接收服务器上文件并写入本地文件
4、其他方法:
ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
ftp.set_pasv(0) #0主动模式 1 #被动模式
print ftp.getwelcome() #打印出欢迎信息
ftp.cmd(“xxx/xxx”) #更改远程目录
ftp.set_debuglevel(0) #关闭调试模式
ftp.quit() #退出ftp
ftp.dir() #显示目录下文件信息
ftp.mkd(pathname) #新建远程目录
ftp.pwd() #返回当前所在位置
ftp.rmd(dirname) #删除远程目录
ftp.delete(filename) #删除远程文件
ftp.rename(fromname, toname) #将fromname修改名称为toname
二、使用ftplib来实现FTP上传下载功能
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from ftplib import FTP
import os
import sys
import time
import socket
class MyFTP:
"""
ftp自动下载、自动上传脚本,可以递归目录操作
作者:欧阳鹏
博客地址:http://blog.csdn.net/ouyang_peng/article/details/79271113
"""
def __init__(self, host, port=21):
""" 初始化 FTP 客户端
参数:
host:ip地址
port:端口号
"""
# print("__init__()---> host = %s ,port = %s" % (host, port))
self.host = host
self.port = port
self.ftp = FTP()
# 重新设置下编码方式
self.ftp.encoding = 'gbk'
self.log_file = open("log.txt", "a")
self.file_list = []
def login(self, username