用python实现FTP功能

Python011

用python实现FTP功能,第1张

开发环境:

1、操作系统: Windows 10 X64

2、Pycharm 2020.2.1

新建项目后,创建两个包 ftp_client与ftp_server,分别代表客户端与服务端。

该项目的完成主要借助了python提供的socketserver库来进行连接。

本项目实现了客户端对于服务端D://文件夹的增加文件,删除文件,修改文件功能。分别以put,delete,modify表示。

对于client,实现了最基础的交互功能,用户可以用如put test.txt等命令来实现功能。修改文件,用户首先输入modify z.txt 命令,z.txt是D://文件夹中已经存在的文件,再根据提示,输入想修改的内容即可修改成功。

在这一模块中,将重点介绍我在实现项目的过程中遇到的问题。

1、bytes与str的转换,传输以字节流进行,但是输出部分内容要以str形式,注意转换

2、熟悉python的语法

3、熟悉文件相关操作

4、考虑传输文件过大的情况

该问题不影响项目的正常使用,但未找到较好的解决办法

from

ftplip

import

FTP

#

首先要引入

ftplib

这个库

#

接着,这是我自定义的几个用于操作

ftp

函数,def

后面跟的是自定义函数名,函数体内FTP

相关的语句和函数来自上面

import

那个包,你自己体会吧:

#

初始化

FTP

连接

def

ftp_open(HOST,PORT,USERNAME,PASSWORD):

ftp=FTP()

ftp.set_debuglevel(2)

ftp.connect(host=HOST,port=PORT)

ftp.login(USERNAME,PASSWORD)

return

ftp

#

关闭

FTP

连接

def

ftp_close(ftp):

ftp.set_debuglevel(0)

ftp.quit()

#

文件上传函数,filename

可以是windows

格式包含全路径的文件

def

ftp_up(ftp,filename):

#print(ftp.getwelcome())

#ftp.cwd('xxx/www')

file_handler=open(filename,'rb')

ftp.storbinary('STOR

%s'

%

os.path.basename(filename),file_handler)

file_handler.close()

print('FTP

up

OK.')

#

文件下载函数,filename

可以是windows

格式包含全路径的文件

def

ftp_down(ftp,filename):

#print(ftp.getwelcome())

#ftp.cwd('xxx/www')

file_handler=open(filename,'wb')

ftp.retrbinary('RETR

%s'

%

os.path.basename(filename),file_handler)

file_handler.close()

print('FTP

down

OK.')

共享文件夹或者文件除了上一篇文章中所说的Http方式,还有FTP方式,即搭建一个FTP服务器,共享文件夹,让别人访问。

Python并没有内置一个FTP服务器,所以需要第三方模块的支持。可以使用pyftpdlib,其官网上有详细的介绍。

在命令行输入下面的语句进行安装:

在选定目录的命令行下输入下面的命令即可将该目录共享出去。

其默认的端口是21,可以修改成其他的端口。

启动后,可以在浏览器中输入 ftp://localhost:21 即可查看当前文件夹下的文件。