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