python3 使用ftplib标准库实现对linux主机的ftp文件下载

#-*- coding:utf-8 -*-
from ftplib import FTP 
import os

def stp_1():
if os.system('ping -n 1 ftp.dedian.org') == 0:
    try:
        ftp = FTP('ftp.dedian.org')#返回FTP实例,给定host会自动执行connect方法
        ftp.set_debuglevel(0)#默认0,不产生调试输出,1产生中等数量,通常每个请求一行,大于或等于2的值将产生最大的调试输出量,记录在控制连接上发送和接收的每一行
        ftp.login()
        ftp.getwelcome()
        print(ftp.dir())#列出目录
        ftp.cwd('devel')
        print('<-------------------->')
        print(ftp.retrlines('LIST'))#list directory contents
    except Exception as e:
        print(e)
else:
    print('ping failed')
stp_1()


def stp_2():
ftp = FTP() #得到FTP实例ftp
if os.system('ping -n 1 192.168.2.5') == 0: #判断网络是否OK
    ftp.set_debuglevel(1) #设置调试级别为2,显示详细信息
    try: #网络的连接我们要永远认为是不可靠的
        ftp.connect(host='192.168.2.5', port=21)#连接FTP服务器,最少要提供 host和port
        ftp.login()#用户名以及密码,默认使用anonymous
        print('<---------------->')
        print(ftp.getwelcome())#打印欢迎信息
        blocksize = 1024 # 实际传输的低级套接字对象上读取的最大块大小
        print(ftp.dir())#默认进入pub上一级目录,因为vsftpd的默认FTP目录路径为 /var/ftp/pub
        ftp.cwd('/pub') #切换到存放准备操作的文件目录pub
        print(ftp.dir()) #显示本目录下的文件
        with open('E:\ss.txt', 'wb') as fp: #在本地打开文件并写入
            ftp.retrbinary('RETR sc.txt', fp.write, blocksize)#fp.write为回调函数, blocksize传递给回调函数最大的数据块(可选)
        ftp.set_debuglevel(0) #关闭调试模式
        ftp.quit()#退出ftp连接
    except Exception as e:
        print(e)
else:
    print('网络不通')
    stp_2()

正常下载完后调试信息为:resp ‘226 Transfer complete.’
如果调试信息出现下面错误,检查在执行ftp.retrbinary()方法时,文件名前是否有“RETR”参数
resp* ‘500 Unknown command.’
500 Unknown command.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值