一緒に創造し、成長するために一緒に働きましょう!「Nuggets Daily New Plan・August Update Challenge」に参加して22日目、イベント詳細はこちら
Pythonには組み込みのftpクライアントがありますが、ftpサーバーを実装するには、サードパーティのライブラリpyftpdlibをインストールする必要があります
pyftpdlib
pyftpdlib は、完全に機能する非同期 FTP サービスを実装します。オープン ソース コードのアドレス: github.com/giampaolo/p…
pyftpdlib をインストールする
多くのインストール方法がありますが、pip をお勧めします。
pip は Python のパッケージ インストーラーです。実際、pip は Python 標準ライブラリ (The Python Standard Library) 内のパッケージですが、このパッケージは特別であり、Python 標準ライブラリ (The Python Standard Library) 内の他のパッケージを管理するために使用できます。pip はコマンド ライン プログラムです。pip がインストールされると、コマンド プロンプトから実行できる pip コマンドがシステムに追加されます。
ピップをインストールします。
-
Python をインストールします。これはインストールする必要があります。
-
ピップをダウンロード:
公式サイトアドレス:pypi.org/project/pip… ; ダウンロード後、解凍
-
コマンド ライン ウィンドウを開き、pip 解凍後にディレクトリに入り、コードを実行します。
インストールする python3 setup.py install
、インストールが完了したら、システム環境変数に pip を追加します -
コマンド ライン ウィンドウが開いていることを確認し、pip list または pip3 list と入力します。
上記は Windows システムのみを対象としており、他のシステムも参照できます。
-
必要なライブラリをインストールします。コマンド ライン ウィンドウを開き、次のコードを入力して実行し、Enter キーを押します。
pip インストール pyftpdlib
3 番目のライブラリが正常にインストールされたことを示すプロンプトが表示されるまで待ちます。
FTP サービスを開始する
pyftpdlib が正常にインストールされたら、コマンド ラインで次のように入力します。
python3 -m pyftpdlib -p 21
簡単な ftp サービスを開始できます. デフォルトでは開始するのに十分ではない 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 クライアント
上記は ftp サービスをローカルで開始します. テスト時には、Windows 独自の ftp クライアント接続テストを使用できます。
コマンド ライン ウィンドウを開き、ftp 127.0.0.1 を入力し、ユーザーを入力し、パスワードのテスト結果を入力します。
さらに、python には組み込みの ftp クライアント ライブラリ ftplib もあります。
Python で FTP クライアントを使用する
- 最初のインポート FTP
ftplib インポート FTP から
- FTP オブジェクトをインスタンス化する
ftp = FTP()
- ftp に接続し、ホストとポートを渡します
ftp.connect(ホスト、ポート)
- ftp にログインし、login メソッドを使用して、ユーザー パスワードを渡します。
ftp.login(u,p)
- ftp に正常にログインし、ファイルをアップロードおよびダウンロードします。
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 操作については、公式ドキュメントを参照してください。