I/Oレジストリ (astropy.io.registry

注釈

I/Oレジストリは、自分のカスタムリーダ/ライタを定義したいユーザのみが直接使用する。どのような内蔵フォーマットをサポートするかに関するより多くの情報を知りたいユーザー Table デフォルトの場合、見るべき 統一ファイル読み書きインタフェース それがそうです。現在内蔵フォーマットを定義するためには NDData しかし、これは未来に追加されるだろう。

序言:序言

I/Oレジストリは、使用可能なリーダ/ライタを定義するためのサブモジュールである Table そして NDData 授業を受けます。

Vbl.使用 astropy.io.registry

本節では,カスタムリーダ/ライタを作成する方法を示す.リーダは,以下のパラメータ以外の任意のパラメータを受け取ることができる関数として書かれている. format (フォーマットを手動で指定する場合-以下を参照)、返します Table あるいは…。 NDData クラス(またはサブクラス).

実例.

ここではリーダ/ライタを作成しようとしていると仮定します Table クラス::

from astropy.table import Table

def my_table_reader(filename, some_option=1):
    # Read in the table by any means necessary
    return table  # should be an instance of Table

その後、このような関数は、I/Oレジストリに登録されてもよい。

from astropy.io import registry
registry.register_reader('my-table-format', Table, my_table_reader)

ここで、第1のパラメータはフォーマットの名前であり、第2のパラメータは関数がインスタンスを返すクラスであり、第3のパラメータはリーダ自体である。

そして表で使うことができます:

d = Table.read('my_table_file.mtf', format='my-table-format')

実際には read 方法は自動的にこのファイルを表示します my-table-format フォーマットでは,これらの文書を識別できる関数を構築することができるが,ここではこれを呼ぶ. 識別子. 機能します。

識別子関数は、識別子が呼び出されるか否かを示す文字列である第1のパラメータを使用すべきである。 read あるいは…。 write そして,以下のように任意の数の位置パラメータとキーワードパラメータを受け取るべきである. *args そして **kwargs これらは read 方法です。

上記の例では、ファイル名のみを見る関数を作成することができる(ただし、実際には、この関数は、ファイルの最初の数バイトを見ることもできる)。IDENTIFIER関数の唯一の要求は、入力がフォーマットによって予期される値に一致するかどうかを示すブール値を返すことである。私たちの例ではファイル名を自動的に識別したいと思います .mtf あるようなものです my-table-format フォーマット::

import os

def identify_mtf(origin, *args, **kwargs):
    return (isinstance(args[0], str) and
            os.path.splitext(args[0].lower())[1] == '.mtf')

注釈

任意の入力のために識別子関数を用意すべきである−特に、第1のパラメータはファイル名またはファイルオブジェクトではない可能性があるので、このような場合を想定すべきではない。

そして、リーダ関数と同様に識別子関数を登録する:

registry.register_identifier('my-table-format', Table, identify_mtf)

この関数を登録すると,以下の操作を実行することができる.

t = Table.read('catalog.mtf')

現在の入力に一致するフォーマットが複数ある場合には例外が発生し、同様に、現在の入力に一致するフォーマットがない場合には例外が引き起こされる。この場合、フォーマットは format= キーワードパラメータ。

カスタムライタを作成することも可能である.上のカスタムリーダーを使うにはカスタムライタを作ることができます

def my_table_writer(table, filename, overwrite=False):
    ...  # Write the table out to a file

コンパイラ関数はDataSetオブジェクト(であってもよい)を用いるべきである. Table あるいは…。 NDData クラスまたはサブクラス)、および任意の数の後続位置およびキーワードパラメータを含む。 format キーワードパラメータは使用できません。

そしてライターを登録しました

registry.register_writer('my-custom-format', Table, my_table_writer)

この表をファイルに書くことができます

t.write('catalog_new.mtf', format='my-table-format')

識別子関数を登録しているので、以下の動作を実行することもできる。

t.write('catalog_new.mtf')

参照/API

Asterpy.io.Registryモジュール

機能

register_reader \(データ_フォーマット,データ_クラス,...)

カードリーダー機能を登録します。

register_writer \(データ_フォーマット,データ_クラス,...)

テーブルライタ関数を登録する.

register_identifier \(データ_フォーマット,データ_クラス,...)

識別子関数を特定のデータタイプに関連付ける.

identify_format \(ソース,データ_クラス_必ず記入,...)

どのフォーマットが一致するかを確認するために、巡回トラバース識別子が使用されます。

get_reader \(データ_フォーマット,データ_クラス)

以下の内容のカードリーダを取得する data_format それがそうです。

get_writer \(データ_フォーマット,データ_クラス)

編集器を取得して data_format それがそうです。

read (CLS,*パラメータ[, format, cache] )

データを読み込む。

write \(データ,*パラメータ[, format] )

データを書く。

get_formats \([data_class, readwrite] )

登録されたI/O形式のリストを表形式で取得する。

delay_doc_updates \(CLS)

ContextManagerは,リーダとライタを登録する際に文書更新を無効にする.

クラス

IORegistryError \

レジストリ衝突のカスタムエラー。

UnifiedReadWriteMethod (関数)

統一I/Oでread()とwrite()メソッドを作成するためのディスクリプタクラス.

UnifiedReadWrite \(インスタンス,ログサービス,メソッド_名)

Read()やwrite()メソッドで用いられるWorkerオブジェクトの基本クラスを統一する.

クラス継承関係図

Inheritance diagram of astropy.io.registry.IORegistryError, astropy.io.registry.UnifiedReadWriteMethod, astropy.io.registry.UnifiedReadWrite