python 数据文件上传到ftp服务器

场景:客户的某数据文件需要定时推送到一个第三方平台的ftp服务器上,第三方平台会对上传过来的数据文件进行解析。
一、通过FTP将文件上传到服务器,需要满足以下几个条件:

  1. 本服务器和ftp服务器是联通的
  2. 需要ftp服务器的IP,用户,密码,端口,ftp服务器文件要存放的路径

二、python代码如下

# -*- coding:utf-8 -*-

import logging
from ftplib import FTP


def ftp_connect(ftp_config):
    """

    :param ftp_config:
    :return:
    """
    host = ftp_config.get('host')
    username = ftp_config.get('username')
    password = ftp_config.get('password')
    port = ftp_config.get('port', 21)
    remote_path = ftp_config.get('remote_dir')
    if not (host and username and password and port):
        logging.error('请检查ftp配置,数据:{}'.format(ftp_config))
        print False
        return False, remote_path
    try:
        ftp = FTP()
        ftp.connect(host, port)
        resp = ftp.login(username, password)
        if '230' in resp:
            logging.info('FTP连接成功!')
            print True
            return ftp, remote_path
        print False
        logging.error('FTP连接失败,信息:{},请检查配置信息'.format(resp))
        return False, remote_path
    except Exception as e:
        logging.error('FTP连接抛出异常,异常信息:{}'.format(e))
        print False
    return False, remote_path


def upload_file(ftp, local_path, remote_path):
    """
    # 从本地上传文件到ftp
    :param ftp:
    :param local_path:
    :param remote_path:
    :return:
    """
    try:
        buff_size = 1024 * 1024 * 1024
        fp = open(local_path, 'rb')
        ftp.storbinary('STOR {}'.format(remote_path), fp, buff_size)
        fp.close()
        ftp.quit()
    except Exception as e:
        logging.error('发送文件error:{}'.format(e))


if __name__ == '__main__':
    ftp_config_data = {
        "host": "1.1.1.1",
        "username": "admin",
        "password": "123456",
        "port": 21,
        "remote_path": "/home/tmp/aa.txt"
    }
    local_path = '/xxx/xxx/aa.txt'
    ftp_obj, remote_path = ftp_connect(ftp_config=ftp_config_data)
    if ftp_obj is not False:
        upload_file(ftp_obj, local_path, remote_path)

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要使用Python3将文件从一个服务器传输到另一个服务器,可以使用paramiko模块实现。这个模块允许你使用SSH协议连接到远程服务器并执行文件传输操作。 以下是实现文件传输的简单示例代码: ``` import paramiko # 设置源和目标服务器的主机名、用户名和密码 src_hostname = 'source_server' src_username = 'source_username' src_password = 'source_password' dst_hostname = 'destination_server' dst_username = 'destination_username' dst_password = 'destination_password' # 创建SSH客户端连接到源服务器 src_ssh = paramiko.SSHClient() src_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) src_ssh.connect(src_hostname, username=src_username, password=src_password) # 创建SSH客户端连接到目标服务器 dst_ssh = paramiko.SSHClient() dst_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) dst_ssh.connect(dst_hostname, username=dst_username, password=dst_password) # 创建SFTP客户端连接到源服务器 src_sftp = src_ssh.open_sftp() # 在源服务器上打开要传输的文件 local_path = '/path/to/local/file' remote_path = '/path/to/remote/file' src_file = src_sftp.open(local_path, 'rb') # 在目标服务器上打开要传输的文件 dst_sftp = dst_ssh.open_sftp() dst_file = dst_sftp.open(remote_path, 'wb') # 从源服务器读取数据并写入目标服务器 dst_file.write(src_file.read()) # 关闭文件和SFTP连接 src_file.close() dst_file.close() src_sftp.close() dst_sftp.close() # 关闭SSH连接 src_ssh.close() dst_ssh.close() ``` 这个示例代码使用paramiko模块连接到源服务器和目标服务器,并使用SFTP协议进行文件传输。在示例代码中,你需要将`src_hostname`、`src_username`、`src_password`、`dst_hostname`、`dst_username`和`dst_password`设置为源服务器和目标服务器的实际信息,将`local_path`和`remote_path`设置为要传输的文件的本地路径和远程路径。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值