Python 搭建 ftp 服务器

实验未成功,先记下代码,后面看看如何修改

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers  import FTPHandler
from pyftpdlib.servers import FTPServer

# 实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
authorizer.add_user('test', '258', r'C:\Users', perm='elradfmwMT')
# 匿名登录
# authorizer.add_anonymous('/home/nobody')
handler = FTPHandler
handler.authorizer = authorizer
# 参数:IP,端口,handler
server = FTPServer(('10.7.133.47', 21), handler)    #设置为0.0.0.0为本机的IP地址
server.serve_forever()

 

上传下载单个文件

from ftplib import FTP

### 连接服务器
ftp = FTP()                         # 设置变量
# ftp.set_debuglevel(2)         # 打开调试级别,2显示详细信息,0关闭调试模式
ftp.connect('10.68.3.137', 21)       # 连接的ftp sever和端口
ftp.login('ftpsafe', 'work1,hard')  # 用户名,密码,如果匿名登录则用空串代替即可


### 上传文件
bufsize = 1024
fp = open('test.txt', 'rb') # 本地文件
cmd = 'STOR 01/test2.txt'   # 上传后的文件名
ftp.storbinary(cmd, fp, bufsize)     # storbinary是以二进制形式上传文件
# cmd: STOR命令,是FTP的一个命令,后面需要加上保存文件的路径及文件名
# fp: 一个打开的文件对象,‘rb’,以二进制形式打开文件


### 下载文件
bufsize = 1024
file_handle = open('new.txt', 'wb')   # 以写模式在本地打开文件
ftp.retrbinary('RETR' + '01/test2.txt', fp.write, bufsize)  # 接收服务器上文件并写入本地文件

 

其他操作

ftp.set_debuglevel(2) # 打开调试级别2,显示详细信息
ftp.set_debuglevel(0) # 关闭调试模式
ftp.set_pasv(0) #0主动模式 1 #被动模式
print(ftp.getwelcome()) #打印出欢迎信息

ftp.cwd('/upload/')     # 切换到指定路径
ftp.pwd() # 返回当前所在位置
ftp.dir()       # 显示目录下文件信息, 类似 ls
ftp.mkd(pathname) # 新建远程目录
ftp.rmd(dirname) # 删除远程目录
filename_list = ftp.nlst()  # 返回一个文件名列表
## 参数为空代表当前目录,也可指定目录
## 只输出第一层文件列表

ftp.delete(filename) # 删除远程文件
ftp.rename(fromname, toname) # 将fromname修改名称为toname

ftp.quit() # 退出ftp

 

更多用法见参考资料

 

 

 

参考资料:

https://www.cnblogs.com/huzixia/p/10389945.html#label1  Python实现FTP服务功能

https://blog.csdn.net/ouyang_peng/article/details/79271113  Python实现的FTP上传和下载功能

https://blog.csdn.net/qq_21422005/article/details/84546973