欢迎访问宙启技术站
智能推送

Python中使用ftplib实现FTP文件上传和下载功能

发布时间:2023-12-19 00:05:08

在Python中,我们可以使用ftplib模块来实现FTP文件上传和下载的功能。ftplib模块提供了一系列的方法,用于连接FTP服务器、登录、上传和下载文件等操作。

下面是一个使用ftplib实现FTP文件上传和下载功能的示例代码:

from ftplib import FTP

def ftp_upload(hostname, username, password, filename, target_dir):
    try:
        # 连接FTP服务器
        ftp = FTP(hostname)
        ftp.login(username, password)

        # 切换到目标目录
        ftp.cwd(target_dir)

        # 打开本地文件
        with open(filename, 'rb') as file:
            # 上传文件
            ftp.storbinary('STOR ' + filename, file)

        print('文件上传成功')
    except Exception as e:
        print('文件上传失败:', str(e))
    finally:
        # 关闭连接
        ftp.quit()

def ftp_download(hostname, username, password, filename, target_dir):
    try:
        # 连接FTP服务器
        ftp = FTP(hostname)
        ftp.login(username, password)

        # 切换到目标目录
        ftp.cwd(target_dir)

        # 打开本地文件
        with open(filename, 'wb') as file:
            # 下载文件
            ftp.retrbinary('RETR ' + filename, file.write)

        print('文件下载成功')
    except Exception as e:
        print('文件下载失败:', str(e))
    finally:
        # 关闭连接
        ftp.quit()

# 使用示例
if __name__ == '__main__':
    hostname = 'ftp.example.com'  # FTP服务器地址
    username = 'username'  # FTP用户名
    password = 'password'  # FTP密码
    filename = 'example.txt'  # 本地文件名
    target_dir = '/uploads'  # 目标目录

    # 上传文件
    ftp_upload(hostname, username, password, filename, target_dir)

    # 下载文件
    ftp_download(hostname, username, password, filename, target_dir)

在上面的示例代码中,我们定义了两个函数ftp_upload()ftp_download()来分别实现文件上传和文件下载的功能。这两个函数接收FTP服务器的地址、用户名、密码、本地文件名以及目标目录等参数。

在函数内部,我们首先通过FTP()方法连接到FTP服务器,并使用login()方法登录FTP服务器。然后,使用cwd()方法切换到目标目录。

在文件上传函数中,我们使用storbinary()方法来上传文件。它接收一个命令字符串和一个文件对象作为参数,用于将文件写入服务器端。

在文件下载函数中,我们使用retrbinary()方法来下载文件。它接收一个命令字符串和一个回调函数作为参数,用于将服务器端的文件写入本地文件。

最后,在使用示例中,我们传入FTP服务器的地址、用户名、密码、本地文件名以及目标目录等参数,调用ftp_upload()函数来上传文件,然后调用ftp_download()函数来下载文件。

这就是使用ftplib实现FTP文件上传和下载功能的方法和示例代码。通过ftplib模块,我们可以很方便地实现FTP文件的上传和下载操作。