python3 ftplib_Python中的FTP通信模块ftplib的用法整理

本文介绍了如何使用Python的ftplib模块创建FTP客户端,通过实例展示如何连接、登录、上传文件,并执行基本的目录操作。重点讲解了上传新备份文件到FTP服务器的过程,适合初学者和Python开发者参考。
摘要由CSDN通过智能技术生成

Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件.

FTP的工作流程及基本操作可参考协议RFC959.

ftp登陆连接

from ftplib import FTP #加载ftp模块

ftp=FTP() #设置变量

ftp.set_debuglevel(2) #打开调试级别2,显示详细信息

ftp.connect("IP","port") #连接的ftp sever和端口

ftp.login("user","password")#连接的用户名,密码

print ftp.getwelcome() #打印出欢迎信息

ftp.cmd("xxx/xxx") #更改远程目录

bufsize=1024 #设置的缓冲区大小

filename="filename.txt" #需要下载的文件

file_handle=open(filename,"wb").write #以写模式在本地打开文件

ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收服务器上文件并写入本地文件

ftp.set_debuglevel(0) #关闭调试模式

ftp.quit #退出ftp

ftp相关命令操作

ftp.cwd(pathname) #设置FTP当前操作的路径

ftp.dir() #显示目录下文件信息

ftp.nlst() #获取目录下的文件

ftp.mkd(pathname) #新建远程目录

ftp.pwd() #返回当前所在位置

ftp.rmd(dirname) #删除远程目录

ftp.delete(filename) #删除远程文件

ftp.rename(fromname, toname)#将fromname修改名称为toname。

ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上传目标文件

ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下载FTP文件

实例

一个上传代码:

import socket

from ftplib import FTP

ftp_server='xx.xx.xx.xx'

ftp_user='xxxxx'

ftp_password='xxxxx'

ftp_backup_dir='backup'

newday = date.today() #获取今天的日期

oldday = date.today()-timedelta(5) #获得5天前的日期

newfile = '/home/backup/' + 'backup_data_' + str(newday.year) + '.' + str(newday.month) + '.' + str(newday.day) + '.zip' #本次备份文件名(绝对路径)

oldfile = '/home/backup/' + 'backup_data_' + str(oldday.year) + '.' + str(oldday.month) + '.' + str(oldday.day) + '.zip' #5天前备份的文件名(绝对路径)

def upload():

socket.setdefaulttimeout(60) #超时FTP时间设置为60秒

ftp = FTP(ftp_server)

print("login ftp...")

try:

ftp.login(ftp_user, ftp_password)

print(ftp.getwelcome()) #获得欢迎信息

try:

if ftp_backup_dir in ftp.nlst():

print("found backup folder in ftp server, upload processing.")

else:

print("don't found backup folder in ftp server, try to build it.")

ftp.mkd(ftp_backup_dir)

except:

print("the folder" + ftp_backup_dir + "doesn't exits and can't be create!")

sys.exit()

except:

print("ftp login failed.exit.")

sys.exit()

ftp.cwd(ftp_backup_dir) #设置FTP路径

print("upload data...")

try:

ftp.storbinary('STOR ' + os.path.basename(newfile), open(newfile,'rb'), 1024) #上传备份文件

except:

print("upload failed. check your permission.")

print("delte old file...")

try:

ftp.delete(os.path.basename(oldfile)) #删除5天前的备份文件

except:

print("the old file in ftp doesn't exists, jumped.")

print("ftp upload successful.exit...")

ftp.quit()

if __name__== '__main__':

upload()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值