Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのftplibモジュールで実現するFTPプロトコルクライアントの使い方

Pythonの標準ライブラリ「ftplib」モジュールに含まれるFTPクラスは、FTPプロトコルのクライアント側機能を実装したものです。このクラスを利用することで、ファイルのアップロードやダウンロードなど、FTPサーバーとのやり取りを簡単に行うことができます。

FTPサーバーへの接続方法

FTPサーバーとの接続を確立するには、まずFTPオブジェクトを取得します。

con = FTP(hostname)

FTPクラスの主なメソッド一覧

connect()

指定されたホストとポートに接続します。ポート番号のデフォルト値は、FTPプロトコル仕様で定められている「21」です。

getwelcome()

初期接続の応答としてサーバーから送信されるウェルカムメッセージを返します。

login(user='anonymous', passwd='', acct='')

指定したユーザーとしてログインします。passwdacctパラメータは省略可能で、デフォルトは空文字列です。ユーザー名が指定されない場合は「anonymous」が使用され、ユーザーが「anonymous」の場合、パスワードのデフォルトは「anonymous@」になります。

abort()

進行中のファイル転送を中断します。

retrbinary(cmd, callback, blocksize=8192, rest=None)

バイナリ転送モードでファイルを取得(ダウンロード)します。cmdには「RETR ファイル名」のような適切なRETRコマンドを指定します。

storbinary(cmd, fp, blocksize=8192)

バイナリ転送モードでファイルを保存(アップロード)します。cmdには「STOR ファイル名」のような適切なSTORコマンドを指定します。fpはバイナリモードで開いたファイルオブジェクトで、read()メソッドによってEOFまで読み込まれます。

dir()

LISTコマンドの結果として返されるディレクトリ一覧を生成し、標準出力に出力します。

delete(filename)

サーバー上からfilenameという名前のファイルを削除します。

cwd(pathname)

サーバー上のカレントディレクトリを設定(変更)します。

mkd(pathname)

サーバー上に新しいディレクトリを作成します。

pwd()

サーバー上の現在のカレントディレクトリのパス名を返します。

rmd(dirname)

サーバー上のdirnameという名前のディレクトリを削除します。

size(filename)

サーバー上のfilenameという名前のファイルのサイズを要求します。成功した場合はファイルサイズが整数値で返され、失敗した場合はNoneが返されます。なお、SIZEコマンドは標準化されていませんが、多くの一般的なサーバー実装でサポートされています。

quit()

サーバーにQUITコマンドを送信し、接続を閉じます。

実装例:匿名接続によるダウンロードとアップロード

以下の例では、FTPサーバーへの匿名接続を確立し、サーバー上のファイルをローカルフォルダへダウンロードした後、ローカルファイルをサーバーへアップロードしています。

from ftplib import FTP
import os

def downloadFile():
    filename = 'README.MIRRORS'
    localfile = open(filename, 'wb')
    ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
    ftp.quit()
    localfile.close()

def uploadFile():
    filename = '/home/malhar/file.txt'
    ftp.storbinary('STOR ' + filename, open(filename, 'rb'))
    ftp.quit()

with FTP("ftp1.at.proftpd.org") as ftp:
    ftp.login()
    ftp.getwelcome()
    ftp.dir()
    downloadFile()
    uploadFile()

このコードでは、withステートメントを使用することで、処理終了後に接続が自動的にクローズされる点にも注目してください。login()を引数なしで呼び出すことで匿名ログインが行われ、getwelcome()でサーバーのウェルカムメッセージを取得、dir()でディレクトリ一覧を表示した後、それぞれの関数によってダウンロードとアップロードを実行しています。

  1. Windows 10のFTPサーバーでファイルを更新・書き込む方法【エクスプローラー/FileZilla】

    これまでの記事では、FTPサーバーの構築方法や、インターネット経由で外部ネットワークからアクセスできるように設定する手順について解説してきました。しかし、FTPサーバーを最大限に活用するには、ファイルの読み取りだけでなく、書き込み(更新)機能も必要不可欠です。その方法はいくつかありますが、Windows 10に標準搭載されているエクスプローラーには、任意のFTPサーバーへアクセスできる機能が備わっています。また、FileZillaのようなサードパーティ製ツールを使って同じ操作を行うことも可能です。本記事では、この2つの方法について詳しく紹介します。 Windows 10のFTPサーバー上のファ

  2. WindowsエクスプローラーをFTPクライアントとして活用する方法

    FTP(File Transfer Protocol)は、ネットワーク上のクライアントとサーバー間でファイルを転送するための標準的なネットワークプロトコルです。FTPはクライアント・サーバーモデルのアーキテクチャに基づいており、制御用とデータ用の接続が別々に確立されるのが特徴です。また、PC間はもちろん、PCとモバイルデバイスの間でもファイル転送に利用できます。サードパーティ製アプリを使う方法もありますが、頻繁にFTPを利用するなら、Windows標準機能だけでも十分に対応できます。 この記事では、WindowsファイルエクスプローラーをFTPクライアントとして使う方法を詳しく解説します。 エ