# 11.7 `ftplib` -- FTPプロトコルクライアント

このモジュールでは`FTP`クラスと、それに関連するいくつかの項目を定 義しています。 `FTP`クラスは、FTPプロトコルのクライアント側の機能を備えています。 このクラスを使うとFTPのいろいろな機能の自動化、例えば他のFTPサーバのミ ラーリングといったことを実行するPythonプログラムを書くことができます。 また、`urllib`モジュールもFTPを使うURLを操作するのにこのクラス を使っています。 FTP (File Transfer Protocol)についての詳しい情報はInternet RFC 959を参 照して下さい。

`ftplib`モジュールを使ったサンプルを以下に示します：

    >>> from ftplib import FTP
    >>> ftp = FTP('ftp.cwi.nl')   # ホストのデフォルトポートへ接続
    >>> ftp.login()               # ユーザ名 anonymous、パスワード anonyumou
    s@
    >>> ftp.retrlines('LIST')     # ディレクトリの内容をリストアップ
    total 24418
    drwxrwsr-x   5 ftp-usr  pdmaint     1536 Mar 20 09:48 .
    dr-xr-srwt 105 ftp-usr  pdmaint     1536 Mar 21 14:32 ..
    -rw-r--r--   1 ftp-usr  pdmaint     5305 Mar 20 09:48 INDEX
     .
     .
     .
    >>> ftp.retrbinary('RETR README', open('README', 'wb').write)
    '226 Transfer complete.'
    >>> ftp.quit()

このモジュールは以下の項目を定義しています：

class `FTP`( | [host[, user[, passwd[, acct]]]])

  `FTP`クラスの新しいインスタンスを返します。 hostが与えられると、`connect(host)`メソッドが実行されま す。 userが与えられると、さらに`login(user, passwd, aracct)`メソッドが実行されます（このpasswdとacctは指定され なければデフォルトでは空文字列です）。

`all_errors`
  `FTP`インスタンスのメソッドの結果、FTP接続で（プログラミングのエ ラーと考えられるメソッドの実行によって）発生する全ての例外（タプル形 式）。 この例外には以下の４つのエラーはもちろん、`socket.error`と `IOError`も含まれます。

exception `error_reply`
  サーバから想定外の応答があった時に発生する例外。

exception `error_temp`
  400-499の範囲のエラー応答コードを受け取った時に発生する例外。

exception `error_perm`
  500-599の範囲のエラー応答コードを受け取った時に発生する例外。

exception `error_proto`
  1-5の数字で始まらない応答コードをサーバから受け取った時に発生する例外。

参考資料:

`netrc`モジュール:
  .netrcファイルフォーマットのパーザ。 .netrcファイルは、FTPクライアントがユーザにプロンプトを出す前に、 ユーザ認証情報をロードするのによく使われます。.

PythonのソースディストリビューションのTools/scripts/ftpmi rror.py ファイルは、FTPサイトあるいはその一部をミ ラーリングするスクリプトで、`ftplib`モジュールを使っています。こ のモジュールを適用した応用例として使うことができます。