# `netrc` --- netrc 檔案處理

原始碼：Lib/netrc.py

`netrc` 類別能夠剖析 (parse) 並封裝 (encapsulate) netrc 檔案格式，以供 Unix ftp 程式和其他 FTP 用戶端使用。

class netrc.netrc([file])

  `netrc` 實例或其子類別實例能夠封裝來自 netrc 檔案的資料。可用初始化引數（如有給定）指定要剖析的檔案，如果未給定引數，則將讀取（由 `os.path.expanduser()` 指定的）使用者主目錄中的 `.netrc` 檔案，否則將引發 `FileNotFoundError` 例外。剖析錯誤會引發 `NetrcParseError`，其帶有包括檔案名稱、列號和終止 token 的診斷資訊。

  如果在 POSIX 系統上未指定引數，且若檔案所有權或權限不安全（擁有者與運行該行程的使用者不同，或者可供任何其他使用者讀取或寫入），存有密碼的 `.netrc` 檔案將會引發 `NetrcParseError`。這實作了與 ftp 和其他使用 `.netrc` 程式等效的安全行為。這種安全檢查在不支援 `os.getuid()` 的平台上不可用。

  在 3.4 版的變更: 新增了 POSIX 權限檢查。

  在 3.7 版的變更: 當未傳遞 file 引數時，`os.path.expanduser()` 可用於查找 `.netrc` 檔案的位置。

  在 3.10 版的變更: `netrc` 在使用特定語言環境編碼前會先嘗試 UTF-8 編碼。netrc 檔案中的條目就不再需要包含所有 token，缺少的 token 值被預設為空字串。現在所有 token 及其值都可以包含任意字元，例如空格和非 ASCII 字元。如果登入名稱為匿名，就不會觸發安全檢查。

exception netrc.NetrcParseError

  當原始文本中遇到語法錯誤時，`netrc` 類別會引發例外。此例外的實例提供了三個有趣的屬性：

  msg

    錯誤的文字解釋。

  filename

    原始檔案的名稱。

  lineno

    發現錯誤的列號。

## netrc 物件

`netrc` 實例具有以下方法：

netrc.authenticators(host)

  回傳 host 身份驗證器的三元素 tuple `(login, account, password)`。如果 netrc 檔案不包含給定主機的條目，則回傳與 'default' 條目關聯的 tuple。如果並無匹配主機且預設條目也不可用則回傳 `None`。

netrc.__repr__()

  將類別資料傾印 (dump) 為 netrc 檔案格式的字串。（這會將註解移除，並可能會對條目重新排序。）

`netrc` 的實例具有公開實例變數：

netrc.hosts

  將主機名稱對映到 `(login, account, password)` tuple 的字典。'default' 條目（如存在）表示為該名稱對應到的偽主機 (pseudo-host)。

netrc.macros

  巨集 (macro) 名稱與字串 list（串列）的對映字典。