# `netrc` --- netrc ファイルの処理

ソースコード: Lib/netrc.py

`netrc` クラスは、Unix ftp プログラムや他の FTP クライアントで用いられる netrc ファイル形式を解析し、カプセル化 (encapsulate) します。

class netrc.netrc([file])

  `netrc` のインスタンスやサブクラスのインスタンスは netrc ファイルのデータをカプセル化します。 初期化の際の引数が存在する場合、解析対象となるファイルの指定になります。 引数がない場合、 (`os.path.expanduser()` で特定される) ユーザのホームディレクトリ下にある `.netrc` が読み出されます。ファイルが見付からなかった場合は `FileNotFoundError` 例外が送出されます。 解析エラーが発生した場合、ファイル名、行番号、解析を中断したトークンに関する情報の入った `NetrcParseError` を送出します。 POSIX システムにおいて引数を指定しない場合、ファイルのオーナシップやパーミッションが安全でない (プロセスを実行しているユーザ以外が所有者であるか、誰にでも読み書き出来てしまう) のに `.netrc` ファイル内にパスワードが含まれていると、 `NetrcParseError` を送出します。 このセキュリティ的な振る舞いは、 ftp などの `.netrc` を使うプログラムと同じものです。

  バージョン 3.4 で変更: POSIX パーミッションのチェックが追加されました。

  バージョン 3.7 で変更: 引数で file が渡されなかったときは、 `.netrc` ファイルの場所を探すのに `os.path.expanduser()` が使われるようになりました。

  バージョン 3.10 で変更: `netrc` は、ロケール固有のエンコーディングを使用する前に、 UTF-8 でのエンコーディングを試みます。 netrc ファイルのエントリがすべてのトークンを含む必要はなくなりました。欠落したトークンのデフォルト値は空文字列です。すべてのトークンとその値は空白や非 ASCII 文字のような任意の文字を使用できるようになりました。ログイン名が匿名の場合、セキュリティチェックはトリガーしません。

exception netrc.NetrcParseError

  ソーステキストに構文上のエラーがある場合に、 `netrc` クラスで発生する例外。この例外のインスタンスは3つの興味深い属性を提供します:

  msg

    エラーのテキストによる説明。

  filename

    ソースファイルの名前。

  lineno

    エラーが見つかった行番号。

## netrc オブジェクト

`netrc` インスタンスは以下のメソッドを持っています:

netrc.authenticators(host)

  host の認証情報として、三要素のタプル `(login, account, password)` を返します。与えられた host に対するエントリが netrc ファイルにない場合、'default' エントリに関連付けられたタプルが返されます。host に対応するエントリがなく、default エントリもない場合、`None` を返します。

netrc.__repr__()

  クラスの持っているデータを netrc ファイルの書式に従った文字列で出力します。(コメントは無視され、エントリが並べ替えられる可能性があります。)

`netrc` のインスタンスは以下の public なインスタンス変数を持っています:

netrc.hosts

  ホスト名を `(login, account, password)` からなるタプルに対応づけている辞書です。'default' エントリがある場合、その名前の擬似ホスト名として表現されます。

netrc.macros

  マクロ名を文字列のリストに対応付けている辞書です。