python中內置了一個ftp客戶端,但是要實現ftp服務端還需要安裝一個第三方庫pyftpdlib
pyftpdlib實現了一個功能完整的異步FTP服務,開源代碼地址:
https://github.com/giampaolo/pyftpdlib
安裝方式有很多種,推薦使用pip;
pip 是 Python 的包安裝程序。其實,pip 就是 Python 標准庫(The Python Standard Library)中的一個包,只是這個包比較特殊,用它可以來管理 Python 標准庫(The Python Standard Library)中其他的包。pip 是一個命令行程序。 安裝 pip 後,會向系統添加一個 pip 命令,該命令可以從命令提示符運行。
安裝pip:
官網地址:https://pypi.org/project/pip/#downloads; 下載完畢後,解壓
python3 setup.py install
進行安裝,
安裝完成後,將pip加入到系統環境變量中
以上只針對於windows系統,其他系統也可以參考;
安裝所需庫:
打開命令行窗口,輸入執行以下代碼,並回車
pip install pyftpdlib
等待提示第三庫安裝成功既可;
pyftpdlib 安裝成功後,在命令行輸入
python3 -m pyftpdlib -p 21
即可啟動一個簡單的ftp服務,不夠默認啟動的ftp服務只有一個無密碼的匿名用戶,如果想添加用戶和權限,需要編碼實現;
def ftpServer(): import pyftpdlib # 該腳本程序是運行在windows上的ftp from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer #實例化虛擬用戶 authorizer = DummyAuthorizer() # 添加用戶權限和路徑 authorizer.add_user('user', '123456', "d:/", perm="elradfmw") # 添加匿名用戶,只需要路徑 authorizer.add_anonymous("d:/") #初始化ftp句柄 handler = FTPHandler handler.authorizer = authorizer #添加被動端口范圍 handler.passive_ports = range(2000,20033) # 監聽ip和端口 server = FTPServer(('0.0.0.0', 21), handler) # 開始服務 server.serve_forever()
運行以上代碼,啟動一個ftp服務;
以上在本地啟動了一個ftp服務,測試的時候,可以使用windows自有的ftp客戶端連接測試;
打開命令行窗口,輸入
ftp 127.0.0.1
輸入用戶,密碼
測試結果
另外,python中也內置了ftp客戶端庫 ftplib
from ftplib import FTP
ftp = FTP()
ftp.connect(host, port)
ftp.login(u,p)
上傳使用storbinary方法:
buf_size = 1024 file_handler = open(local_file, 'rb') ftp.storbinary('STOR %s' % remote_file, file_handler, buf_size) file_handler.close()
下載使用retrbinary方法
try: buf_size = 1024 file_handler = open(local_file, 'wb')ftp.retrbinary('RETR %s' % remote_file, file_handler.write, buf_size) file_handler.close() except Exception as err: return
執行完FTP操作後,需要關閉連接
ftp.quit()
以上至實現了ftp的日常操作;關於ftp其他相關操作,可以參考官方文檔;