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

用Python实现一个简单的FTP服务器

发布时间:2023-12-04 16:19:07

实现一个简单的FTP服务器可以使用Python的ftplib模块来实现。

下面是一个使用ftplib实现简单FTP服务器的例子:

from ftplib import FTP

# FTP服务器端口和地址
FTP_HOST = '127.0.0.1'
FTP_PORT = 21
FTP_USER = 'username'
FTP_PASS = 'password'
FTP_DIR = '/path/to/directory'  # 文件保存路径

# 定义一个FTP服务器类
class FTPServer:
    def __init__(self, host, port, username, password):
        self.host = host
        self.port = port
        self.username = username
        self.password = password

    # 连接服务器
    def connect(self):
        ftp = FTP()
        ftp.connect(self.host, self.port)
        ftp.login(self.username, self.password)
        return ftp

    # 上传文件
    def upload_file(self, ftp, local_file, remote_file):
        ftp.storbinary('STOR ' + remote_file, open(local_file, 'rb'))
        print('File uploaded successfully!')

    # 下载文件
    def download_file(self, ftp, remote_file, local_file):
        ftp.retrbinary('RETR ' + remote_file, open(local_file, 'wb').write)
        print('File downloaded successfully!')

    # 列出目录下的文件
    def list_files(self, ftp):
        ftp.retrlines('LIST')

# 实例化FTP服务器类
ftp_server = FTPServer(FTP_HOST, FTP_PORT, FTP_USER, FTP_PASS)

# 连接FTP服务器
ftp = ftp_server.connect()

# 列出服务器上的文件
ftp_server.list_files(ftp)

# 上传文件
local_file = 'local_file.txt'
remote_file = 'remote_file.txt'
ftp_server.upload_file(ftp, local_file, remote_file)

# 下载文件
remote_file = 'remote_file.txt'
local_file = 'local_file.txt'
ftp_server.download_file(ftp, remote_file, local_file)

# 关闭连接
ftp.quit()

上述代码中,首先定义了一个FTPServer类,该类封装了FTP服务器的连接、上传文件、下载文件和列出文件的功能。在实例化FTPServer类时,需要传入FTP服务器的地址、端口号、用户名和密码。然后通过调用类的connect方法连接服务器,之后就可以使用upload_file方法上传文件,使用download_file方法下载文件,使用list_files方法列出服务器上的文件。本例中还提供了一个使用ftplib模块的常见操作的示例。

请注意,在FTP_SERVER变量中,需要填写合适的FTP服务器地址、端口、用户名、密码和文件保存路径。

另外,注意保护敏感信息,如用户名和密码,可以通过配置文件等方式来进行保护。