Python操作FTP

本文提供利用python将文件上传到FTP中和从FTP中下载文件到本地的方法

适用环境: python3

from ftplib import FTP
import os.path

#设置FTP连接信息
address= '127.0.0.1'
port= 21
#FTP用户名
user_name= 'user'
#FTP密码
password= 'passwd'

#本地要上传的文件名
local_file_name="local/test.xlsx"
#FTP中要下载的文件名
remote_file_name="remote/test.xlsx"

#将文件上传到FTP
def upload_file(local_file_name):
    try:
        ftp = FTP()
        ftp.connect(address,port)
        ftp.login(user_name,password)
        #文件上传到FTP服务器的路径(前提是路径要存在,否则会报错)
        remote_path="/"#如:将本地文件上传到FTP根目录
        ftp.cwd(remote_path)#切换到此路径
        file=open(local_file_name,'rb')
        #如果参数 pasv 为真,打开被动模式传输 (PASV MODE) ,否则,如果参数 pasv 为假则关闭被动传输模式。
        ftp.set_pasv(0)    
        ftp.storbinary('STOR %s' % os.path.basename(local_file_name),file)    
        file.close()    
        ftp.close()
        print("文件上传完成")
    except Exception as e:
        print("文件上传失败...")
        print(str(e))
        
#upload_file(local_file_name)

#从FTP中下载文件到本地
def download_file(remote_file_name):
    try:
        #创建ftp对象实例 
        ftp = FTP()  
        #连接接FTP
        ftp.connect(address, port)
        #通过账号和密码登录FTP服务器 
        ftp.login(user_name,password)
        #如果参数 pasv 为真,打开被动模式传输 (PASV MODE) ,否则,如果参数 pasv 为假则关闭被动传输模式。
        ftp.set_pasv(0)
        #设置FTP上文件下载到本地的位置
        local_path="local/"#如:将文件下载到当前程序所在目录中的local子目录中,也可以使用绝对路径
        #为准备下载到本地的文件,创建文件对象(默认为远程下载的文件名,也可自定义)
        local_file_name=local_path + os.path.basename(remote_file_name)
        file = open(local_file_name, 'wb')
        #从FTP服务器下载文件到前一步创建的文件对象,其中写对象为file.write,1024是缓冲区大小  
        ftp.retrbinary('RETR '+remote_file_name,file.write,1024)  
        #关闭下载到本地的文件  
        #提醒:虽然Python可以自动关闭文件,但实践证明,如果想下载完后立即读该文件,最好关闭后重新打开一次 
        file.close() 
        #关闭FTP客户端连接
        ftp.close()
        print("文件下载完成")
    except Exception as e:
        print("文件下载失败...")
        print(str(e))
        
#download_file(remote_file_name)
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jepson2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值