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モジュール¶
機能¶
|
カードリーダー機能を登録します。 |
|
テーブルライタ関数を登録する. |
|
識別子関数を特定のデータタイプに関連付ける. |
|
どのフォーマットが一致するかを確認するために、巡回トラバース識別子が使用されます。 |
|
以下の内容のカードリーダを取得する |
|
編集器を取得して |
|
データを読み込む。 |
|
データを書く。 |
|
登録されたI/O形式のリストを表形式で取得する。 |
|
ContextManagerは,リーダとライタを登録する際に文書更新を無効にする. |
クラス¶
レジストリ衝突のカスタムエラー。 |
|
統一I/Oでread()とwrite()メソッドを作成するためのディスクリプタクラス. |
|
|
Read()やwrite()メソッドで用いられるWorkerオブジェクトの基本クラスを統一する. |