20.8。 ftplib —FTPプロトコルクライアント
ソースコード: :source: `Lib / ftplib.py`
このモジュールは、クラス FTP といくつかの関連アイテムを定義します。 FTP クラスは、FTPプロトコルのクライアント側を実装します。 これを使用して、他のFTPサーバーのミラーリングなど、さまざまな自動FTPジョブを実行するPythonプログラムを作成できます。 また、FTPを使用するURLを処理するためにモジュール urllib によって使用されます。 FTP(ファイル転送プロトコル)の詳細については、インターネット RFC 959 を参照してください。
ftplib モジュールを使用したサンプルセッションは次のとおりです。
このモジュールは、次の項目を定義します。
- class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])
FTP クラスの新しいインスタンスを返します。 host を指定すると、メソッド呼び出し
connect(host)
が行われます。 user が指定されると、さらにlogin(user, passwd, acct)
メソッド呼び出しが行われます( passwd および acct は、指定されていない場合、デフォルトで空の文字列になります)。 オプションの timeout パラメーターは、接続試行などのブロック操作のタイムアウトを秒単位で指定します(指定されていない場合は、グローバルなデフォルトのタイムアウト設定が使用されます)。バージョン2.6で変更: timeout が追加されました。
- class ftplib.FTP_TLS([host[, user[, passwd[, acct[, keyfile[, certfile[, context[, timeout]]]]]]]])
RFC 4217 で説明されているように、FTPにTLSサポートを追加する FTP サブクラス。 認証する前に、通常どおりポート21に接続してFTP制御接続を暗黙的に保護します。 データ接続を保護するには、ユーザーが prot_p()メソッドを呼び出して明示的に要求する必要があります。 context は、 ssl.SSLContext オブジェクトであり、SSL構成オプション、証明書、および秘密鍵を単一の(潜在的に長寿命の)構造にバンドルできます。 ベストプラクティスについては、セキュリティに関する考慮事項をお読みください。
keyfile および certfile は、 context のレガシー代替手段であり、SSL接続用に(それぞれ)PEM形式の秘密鍵および証明書チェーンファイルを指すことができます。
バージョン2.7の新機能。
バージョン2.7.10で変更: context パラメーターが追加されました。
FTP_TLS クラスを使用したサンプルセッションは次のとおりです。
- exception ftplib.error_reply
- サーバーから予期しない応答を受信すると、例外が発生します。
- exception ftplib.error_temp
- 一時的なエラーを示すエラーコード(400〜499の範囲の応答コード)を受信すると、例外が発生します。
- exception ftplib.error_perm
- 永続的なエラーを示すエラーコード(500〜599の範囲の応答コード)を受信すると、例外が発生します。
- exception ftplib.error_proto
- ファイル転送プロトコルの応答仕様に適合しない応答をサーバーから受信した場合に発生する例外。 1〜5の範囲の数字で始まります。
- ftplib.all_errors
- FTP インスタンスのメソッドが(呼び出し元によるプログラミングエラーとは対照的に)FTP接続の問題の結果として発生する可能性のあるすべての例外のセット(タプルとして)。 このセットには、上記の4つの例外と、 socket.error および
IOError
が含まれています。
も参照してください
- モジュール netrc
.netrc
ファイル形式のパーサー。 ファイル.netrc
は通常、ユーザーにプロンプトを表示する前にユーザー認証情報をロードするためにFTPクライアントによって使用されます。
PythonソースディストリビューションのファイルTools/scripts/ftpmirror.py
は、 ftplib モジュールを使用して、FTPサイトまたはその一部をミラーリングできるスクリプトです。 このモジュールを適用する拡張例として使用できます。
20.8.1。 FTPオブジェクト
いくつかの方法が2つのフレーバーで利用できます。1つはテキストファイルを処理するためのもので、もう1つはバイナリファイルのためのものです。 これらは、使用されるコマンドにちなんで名付けられ、その後にテキストバージョンの場合はlines
、バイナリバージョンの場合はbinary
が続きます。
FTP インスタンスには次のメソッドがあります。
- FTP.set_debuglevel(level)
- インスタンスのデバッグレベルを設定します。 これは、出力されるデバッグ出力の量を制御します。 デフォルトの
0
は、デバッグ出力を生成しません。1
の値は、適度な量のデバッグ出力を生成します。通常、要求ごとに1行です。2
以上の値は、最大量のデバッグ出力を生成し、制御接続で送受信された各行をログに記録します。
- FTP.connect(host[, port[, timeout]])
指定されたホストとポートに接続します。 FTPプロトコル仕様で指定されているように、デフォルトのポート番号は
21
です。 別のポート番号を指定する必要はほとんどありません。 この関数は、インスタンスごとに1回だけ呼び出す必要があります。 インスタンスの作成時にホストが指定された場合は、まったく呼び出さないでください。 他のすべての方法は、接続が確立された後にのみ使用できます。オプションの timeout パラメーターは、接続試行のタイムアウトを秒単位で指定します。 timeout が渡されない場合、グローバルなデフォルトのタイムアウト設定が使用されます。
バージョン2.6で変更: timeout が追加されました。
- FTP.getwelcome()
- 最初の接続に応答してサーバーから送信されたウェルカムメッセージを返します。 (このメッセージには、ユーザーに関連する可能性のある免責事項またはヘルプ情報が含まれている場合があります。)
- FTP.login([user[, passwd[, acct]]])
- 指定されたユーザーとしてログインします。 passwd および acct パラメーターはオプションであり、デフォルトで空の文字列になります。 user が指定されていない場合、デフォルトで
'anonymous'
になります。 user が'anonymous'
の場合、デフォルトの passwd は'anonymous@'
です。 この関数は、接続が確立された後、インスタンスごとに1回だけ呼び出す必要があります。 インスタンスの作成時にホストとユーザーが指定されている場合は、まったく呼び出さないでください。 ほとんどのFTPコマンドは、クライアントがログインした後にのみ許可されます。 acct パラメーターは、「アカウンティング情報」を提供します。 これを実装しているシステムはほとんどありません。
- FTP.abort()
- 進行中のファイル転送を中止します。 これを使用しても常に機能するとは限りませんが、試してみる価値はあります。
- FTP.sendcmd(command)
- 単純なコマンド文字列をサーバーに送信し、応答文字列を返します。
- FTP.voidcmd(command)
- 簡単なコマンド文字列をサーバーに送信し、応答を処理します。 成功に対応する応答コード(200〜299の範囲のコード)を受信した場合は、何も返しません。 それ以外の場合は、 error_reply を発生させます。
- FTP.retrbinary(command, callback[, maxblocksize[, rest]])
- バイナリ転送モードでファイルを取得します。 コマンドは適切な
RETR
コマンドである必要があります:'RETR filename'
。 callback 関数は、受信したデータのブロックごとに呼び出され、単一の文字列引数がデータブロックを示します。 オプションの maxblocksize 引数は、実際の転送を行うために作成された低レベルソケットオブジェクトで読み取る最大チャンクサイズを指定します(これは、コールバック[X228Xに渡されるデータブロックの最大サイズでもあります) ])。 妥当なデフォルトが選択されます。 rest は、 transfercmd()メソッドと同じ意味です。
- FTP.retrlines(command[, callback])
- ASCII転送モードでファイルまたはディレクトリのリストを取得します。 コマンドは、適切な
RETR
コマンド( retrbinary()を参照)またはLIST
、NLST
、[ X133X] (通常は文字列'LIST'
のみ)。LIST
は、ファイルのリストとそれらのファイルに関する情報を取得します。NLST
は、ファイル名のリストを取得します。 一部のサーバーでは、MLSD
は、マシンで読み取り可能なファイルのリストとそれらのファイルに関する情報を取得します。 callback 関数は、末尾のCRLFが削除された行を含む文字列引数を使用して各行に対して呼び出されます。 デフォルトの callback は、行をsys.stdout
に出力します。
- FTP.set_pasv(val)
- val がtrueの場合は「パッシブ」モードを有効にし、それ以外の場合はパッシブモードを無効にします。 (Python 2.0以前では、パッシブモードはデフォルトでオフでした。Python2.1以降では、デフォルトでオンになっています。)
- FTP.storbinary(command, fp[, blocksize, callback, rest])
ファイルをバイナリ転送モードで保存します。 コマンドは適切な
STOR
コマンドである必要があります:"STOR filename"
。 fp は、保存するデータを提供するために、サイズ blocksize のブロックでread()
メソッドを使用してEOFまで読み取られるオープンファイルオブジェクトです。 blocksize 引数のデフォルトは8192です。 callback は、送信後にデータの各ブロックで呼び出されるオプションの単一パラメーターcallableです。 rest は、 transfercmd()メソッドと同じ意味です。バージョン2.1で変更:ブロックサイズのデフォルトが追加されました。
バージョン2.6で変更: コールバックパラメーターが追加されました。
バージョン2.7で変更: rest パラメーターが追加されました。
- FTP.storlines(command, fp[, callback])
ファイルをASCII転送モードで保存します。 コマンドは適切な
STOR
コマンドである必要があります( storbinary()を参照)。 readline()メソッドを使用して、開いているファイルオブジェクト fp からEOFまで行が読み取られ、格納されるデータが提供されます。 callback は、送信後に各行で呼び出されるオプションの単一パラメーターcallableです。バージョン2.6で変更: コールバックパラメーターが追加されました。
- FTP.transfercmd(cmd[, rest])
データ接続を介して転送を開始します。 転送がアクティブな場合は、
EPRT
またはPORT
コマンドと cmd で指定された転送コマンドを送信し、接続を受け入れます。 サーバーがパッシブの場合は、EPSV
またはPASV
コマンドを送信してサーバーに接続し、転送コマンドを開始します。 いずれにせよ、接続用のソケットを返却してください。オプションの rest を指定すると、
REST
コマンドがサーバーに送信され、 rest が引数として渡されます。 rest は通常、要求されたファイルへのバイトオフセットであり、最初のバイトをスキップして、要求されたオフセットでファイルのバイトの送信を再開するようサーバーに指示します。 ただし、RFC 959では、 rest がASCIIコード33からASCIIコード126までの印刷可能な範囲の文字を含む文字列である必要があるだけであることに注意してください。 したがって、 transfercmd()メソッドは、 rest を文字列に変換しますが、文字列の内容はチェックされません。 サーバーがREST
コマンドを認識しない場合、 error_reply 例外が発生します。 これが発生した場合は、 rest 引数なしで transfercmd()を呼び出すだけです。
- FTP.ntransfercmd(cmd[, rest])
- transfercmd()と同様ですが、データ接続のタプルとデータの予想サイズを返します。 予想サイズを計算できなかった場合は、
None
が予想サイズとして返されます。 cmd および rest は、 transfercmd()と同じ意味です。
- FTP.nlst(argument[, ...])
NLST
コマンドによって返されるファイル名のリストを返します。 オプションの argument は、リストするディレクトリです(デフォルトは現在のサーバーディレクトリです)。 複数の引数を使用して、非標準オプションをNLST
コマンドに渡すことができます。
- FTP.dir(argument[, ...])
LIST
コマンドによって返されるディレクトリリストを作成し、標準出力に出力します。 オプションの argument は、リストするディレクトリです(デフォルトは現在のサーバーディレクトリです)。 複数の引数を使用して、非標準オプションをLIST
コマンドに渡すことができます。 最後の引数が関数の場合、 retrlines()と同様にコールバック関数として使用されます。 デフォルトではsys.stdout
に出力されます。 このメソッドはNone
を返します。
- FTP.rename(fromname, toname)
- サーバー上のファイル fromname の名前を toname に変更します。
- FTP.delete(filename)
- filename という名前のファイルをサーバーから削除します。 成功した場合は、応答のテキストを返します。それ以外の場合は、アクセス許可エラーの場合は error_perm を、その他のエラーの場合は error_reply を発生させます。
- FTP.cwd(pathname)
- サーバー上の現在のディレクトリを設定します。
- FTP.mkd(pathname)
- サーバー上に新しいディレクトリを作成します。
- FTP.pwd()
- サーバー上の現在のディレクトリのパス名を返します。
- FTP.rmd(dirname)
- サーバー上の dirname という名前のディレクトリを削除します。
- FTP.size(filename)
- サーバー上の filename という名前のファイルのサイズを要求します。 成功すると、ファイルのサイズが整数として返されます。それ以外の場合は、
None
が返されます。SIZE
コマンドは標準化されていませんが、多くの一般的なサーバー実装でサポートされていることに注意してください。
- FTP.quit()
QUIT
コマンドをサーバーに送信し、接続を閉じます。 これは接続を閉じるための「丁寧な」方法ですが、サーバーがQUIT
コマンドにエラーで応答した場合に例外が発生する可能性があります。 これは、 close()メソッドの呼び出しを意味し、 FTP インスタンスを後続の呼び出しに使用できなくなります(以下を参照)。
- FTP.close()
- 一方的に接続を閉じます。 これは、 quit()の呼び出しが成功した後など、すでに閉じられている接続には適用しないでください。 この呼び出しの後、 FTP インスタンスは使用しないでください( close()または quit()の呼び出し後、別のインスタンスを発行して接続を再開することはできません login()メソッド)。
20.8.2。 FTP_TLSオブジェクト
FTP_TLS クラスは FTP を継承し、次の追加オブジェクトを定義します。
- FTP_TLS.ssl_version
- 使用するSSLバージョン(デフォルトは ssl.PROTOCOL_SSLv23 )。
- FTP_TLS.auth()
- ssl_version()属性で指定された内容に応じて、TLSまたはSSLを使用して安全な制御接続をセットアップします。
- FTP_TLS.prot_p()
- 安全なデータ接続を設定します。
- FTP_TLS.prot_c()
- クリアテキストデータ接続を設定します。