python中的ftp下载上传测试




#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
FTP常用操作
"""
from ftplib import FTP
import os
class FTP_OP(object):

  def __init__(self, host, username, password, port):
    """
    初始化ftp
  :param host: ftp主机ip
  :param username: ftp用户名
  :param password: ftp密码
  :param port: ftp端口 (默认21)
  """
    self.host = host
    self.username = username
    self.password = password
    self.port = port
    self.ftp = FTP()
    self.ftp_connect()
  def __del__(self):
      self.ftp.close()

  def ftp_connect(self):
    """
    连接ftp
    :return:
    """
    self.ftp.set_debuglevel(1) # 不开启调试模式
    self.ftp.connect(host=self.host, port=self.port) # 连接ftp
    self.ftp.login(self.username, self.password) # 登录ftp
    self.ftp.set_pasv(False)##ftp有主动 被动模式 需要调整
    return self.ftp.getwelcome()

  def download_file(self, ftp_file, dst_file):
    """
    从ftp下载文件到本地
    :param ftp_file_path: ftp下载文件路径
    :param dst_file_path: 本地存放路径
    :return:
    """
    buffer_size = 102400 #默认是8192
    # ftp = self.ftp_connect()
    print(self.ftp.getwelcome() ) #显示登录ftp信息

    with open(dst_file, "wb") as f:
      self.ftp.retrbinary('RETR %s' % ftp_file, f.write, buffer_size)
          #f.close()
    # ftp.quit()

if __name__ == '__main__':
  host = "192.168.3.20"
  username = "data"
  password = "data"
  port = 21
  ftp_file_path = "videoservice.run"  #FTP目录
  dst_file_path = "videoservice.run" #本地目录
  ftp = FTP_OP(host=host, username=username, password=password, port=port)
  ftp.download_file(ftp_file=ftp_file_path, dst_file=dst_file_path)


import ftplib
if __name__ == "__main2__":
    # app = QtWidgets.QApplication(sys.argv)


    # 连接FTP服务器
    ftp = ftplib.FTP('192.168.3.20')
    ftp.login('data', 'data')
    ftp.set_pasv(False)
    ftp.set_debuglevel(1)

    # 上传文件
    localrdfp = open('test.jpg', 'rb')
    ftp.storbinary('STOR test.jpg',localrdfp )

    # 下载文件
    localwrfp = open('00000001.tif', 'wb')
    ftp.retrbinary('RETR videoservice.run',localwrfp.write,102400 )


    # 关闭FTP连接
    ftp.quit()
    # app.exec()

测试的过程中 ftp.retrbinary('RETR videoservice.run',localwrfp.write,102400 ) 的后两个参数比较重要,没写对的话会错误

ftp.getwelcome() 可以作为ftp是否连上的测试条件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值