Python的FTP服务器与FTP基本操作

原创
2019/11/28 22:17
阅读数 179

一、概览

ftp概览

二、Python FTP服务

pyftpdlib可以非常方便的帮我们启动一个FTP服务器,可以用于测试,首先安装pyftpdlib:

pip install pyftpdlib

使用代码启动一个服务器:

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

authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
authorizer.add_user('tim', '123456', r'H:\tmp\pyftp', perm='elradfmwMT')
handler = FTPHandler
handler.authorizer = authorizer
# 参数:IP,端口,handler
server = FTPServer(('0.0.0.0', 8888), handler)
server.serve_forever()

当然也可以通过命令行启动一个服务:

python -m pyftpdlib -i localhost -p 8888 -u tim -P 123456 -d H:\tmp\pyftp 

pyftpdlib文档

三、基本操作

# -*- coding: utf-8 -*-
from ftplib import FTP

ftp = FTP()
# 控制日志输出
# ftp.set_debuglevel(2)
ftp.connect("127.0.0.1", 8888)
ftp.login("tim", "123456")

print(ftp.dir())                 # 显示目录下所有目录的信息
print(ftp.nlst())                # 获取文件名称列表
ftp.mkd("/mkd")                  # 新建目录
ftp.delete("hello.txt")          # 删除远程文件
ftp.rename("ok.png", "nok.png")  # 重命名
ftp.rmd("/data")                 # 删除远程目录
ftp.cwd("mkd")                   # 修改工作目录
ftp.pwd()                        # 返回当前所在位置

四、上传文件

# -*- coding: utf-8 -*-
from ftplib import FTP

ftp = FTP()
# 打开调试级别2,显示详细信息
ftp.set_debuglevel(2)
ftp.connect("127.0.0.1", 8888)
ftp.login("tim", "123456")
bufsize = 1024
# 上传二进制文件
fp = open(r"F:\picture\3.png", 'rb')
ftp.storbinary('STOR ' + "/ok.png", fp, bufsize)

# 上传文本文件
fp = open(r"F:\picture\ok.txt", 'rb')
ftp.storlines('STOR ' + "/hello.txt", fp)
fp.close()

五、下载文件

# -*- coding: utf-8 -*-
from ftplib import FTP

ftp = FTP()
ftp.set_debuglevel(2)
ftp.connect("127.0.0.1", 8888)
ftp.login("tim", "123456")
bufsize = 1024

# 下载二进制文件
fp = open(r"F:\picture\ooo.png", 'wb')
ftp.retrbinary('RETR ' + "/ok.png", fp.write, bufsize)
fp.close()

# 注意下载文本文件是wt模式
fp = open(r"F:\picture\xx.txt", 'wt')
ftp.retrlines('RETR ' + "/hello.txt", fp.write)
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部