Next: , Previous:   [Contents][Index]

69 numericalio


69.1 Introduction to numericalio

numericalioは ファイルやストリームを読み書きする関数のコレクションです。 プレインテキスト入出力のための関数は、 数(整数、浮動小数点、多倍長浮動小数点)やシンボル、文字列を読み書きできます。 バイナリ入出力のための関数は、 浮動小数点数だけを読み書きできます。

もし既に入力データを記憶すべきリスト、行列、配列オブジェクトがあるなら、 numericalio入力関数群はデータをそのオブジェクトに書き込むことができます。 そうでなければ、 numericalioはデータを記憶するオブジェクトの構造をある程度推測し、 そのオブジェクトを返します。

69.1.1 Plain-text input and output

プレインテキスト入出力では、 読み書きする項目それぞれがアトムであることが仮定されます: 整数、浮動小数点数、多倍長浮動小数点、文字列、シンボルであり、 有理数や複素数や他のどんなアトムでない式でもありません。 numericalio関数群は、アトムでない式に直面した時、 何か適当なことを試みるかもしれませんが、 結果はここで規定されず、変更の対象となります。

入力ファイルと出力ファイルどちらのアトムも、 Maximaバッチファイルや対話コンソールでのものと同じフォーマットを持ちます。 特に、文字列はダブルクォートで括られ、 バックスラッシュ\は次の文字の任意の特殊解釈を抑制し、 クエスチョンマーク?は (Maximaシンボルではなく、)Lispシンボルを意味するシンボルの始まりとして認識されます。 (分割された行をつなぎ合わせる)いかなる継続文字も認識されません。

69.1.2 Separator flag values for input

プレインテキスト入出力のための関数は、オプションの引数separator_flag を取ります。 それはどの文字がデータを分離するかを示します。

プレインテキスト入力では、 separator_flagの以下の値が認識されます: コンマで区切られた値のためのcomma、 垂直バー文字|で区切られた値のためのpipe、 セミコロン;で区切られた値のためのsemicolon、 空白かタブ文字で区切られた値のためのspace。 もしファイル名が.csvで終わり、 separator_flagが指定されていないなら、 commaが仮定されます。 もしファイル名が.csv以外の何かで終わり、 separator_flagが指定されていないなら、 spaceが仮定されます。

プレインテキスト入力では、 複数続く空白とタブ文字は1つの区切り文字として数えられます. しかしながら、複数のコンマ、パイプまたはセミコロンは意味を持ちます。 連続するコンマ、パイプ、セミコロン文字は (空白やタブが間に入ろうが入るまいが) 区切り文字の間にfalseを持つと見なされます。 例えば、1234,,Foo1234,false,Fooと同じと扱われます。

69.1.3 Separator flag values for output

プレインテキスト出力では、 comma, pipe, semicolon, そしてspaceはもちろん、 タブ文字で区切られた値のためのtabも、 separator_flagの値として認識されます。

プレインテキスト出力では、 falseアトムは以下のように書かれます: リスト[1234, false, Foo]1234,false,Fooと書かれ、 出力を1234,,Fooにつぶすことはありません。

69.1.4 Binary floating-point input and output

numericalio関数群は8バイトIEEE754浮動小数点数を読み書きすることができます。 これらの数は、 assume_external_byte_orderで設定されたグローバルフラグに従って、 最下位バイトから順でも最上位バイトから順でも記憶することができます。

もし指定されないなら、 numericalioは外部バイト順は最上位バイトからと仮定します。

他の種類の数は8バイト浮動小数点に強制変換されます; numericalioはアトムでないバイナリデータを読み書きできません。

いくつかのLisp実装は IEEE 754の特殊値(正負の無限大、非数値、指数表現でない数)を認識しません。 numericalioでそんな値を読み込むことの効果は未定義です。

numericalioは バイトストリームを読んだり書いたりするためのストリームを開く 関数を含みます。


69.2 Functions and Variables for plain-text input and output

関数: read_matrix (S)
関数: read_matrix (S, M)
関数: read_matrix (S, separator_flag)
関数: read_matrix (S, M, separator_flag)

read_matrix(S)は、 ソースSを読み込み、行列として内容全体を返します。 行列のサイズは入力データから推論されます; ファイルの行それぞれは行列の1行になります。 もし複数の行が異なる長さを持つなら、 read_matrixはエラーを出力します。

read_matrix(S, M)は、 Mが一杯になるか、ソースが尽きるまで、 ソースSを行列Mに読み込みます。 入力データは行優先順に行列に読み込まれます; 入力はMと同じ行数と列数を持つ必要はありません。

ソースSはファイル名かストリームかもしれません。

separator_flagの認識される値は comma, pipe, semicolon, spaceです。 もしseparator_flagが指定されないなら、ファイルは空白で区切られていると仮定されます。

関数: read_array (S, A)
関数: read_array (S, A, separator_flag)

Aが一杯になるか、ソースが尽きるまで、 ソースSを配列Aに読み込みます。 入力データは列優先順に配列に読み込まれます; 入力はAの次元に一致する必要はありません。

ソースSはファイル名かストリームかもしれません。

separator_flagの認識される値は comma, pipe, semicolon, spaceです。 もしseparator_flagが指定されないなら、ファイルは空白で区切られていると仮定されます。

関数: read_hashed_array (S, A)
関数: read_hashed_array (S, A, separator_flag)

ソースSが読み込まれ、ハッシュ配列として内容全体が返されます。 ソースSはファイル名かストリームかもしれません。

read_hashed_arrayは、 それぞれの行の最初の項目をハッシュキーとして扱い、 行の残りを(リストとして)キーと結合します。 例えば、 行567 12 17 32 55A[567]: [12, 17, 32, 55]$と同値です。 行数は要素数と同じである必要はありません。

separator_flagの認識される値は comma, pipe, semicolon, spaceです。 もしseparator_flagが指定されないなら、ファイルは空白で区切られていると仮定されます。

関数: read_nested_list (S)
関数: read_nested_list (S, separator_flag)

ソースSを読み込み、 入れ子のリストとして内容全体を返します。 ソースSはファイル名かストリームかもしれません。

read_nested_listは 入力のそれぞれの行について部分リストを持つリストを返します。 行数は要素数と同じである必要はありません。 空の行は無視されません: 空の行は空の部分リストをもたらします。

separator_flagの認識される値は comma, pipe, semicolon, spaceです。 もしseparator_flagが指定されないなら、ファイルは空白で区切られていると仮定されます。

関数: read_list (S)
関数: read_list (S, L)
関数: read_list (S, separator_flag)
関数: read_list (S, L, separator_flag)

read_list(S)は、 ソースSを読み込み、 フラットなリストとして内容全体を返します。

read_list(S, L)は、 Lが一杯になるかソースが尽きるまで、 ソースSを リストLに読み込みます。

ソースSはファイル名かストリームかもしれません。

separator_flagの認識される値は comma, pipe, semicolon, spaceです。 もしseparator_flagが指定されないなら、ファイルは空白で区切られていると仮定されます。

関数: write_data (X, D)
関数: write_data (X, D, separator_flag)

オブジェクトXをデスティネーションDに書き出します。

write_dataは行列を 行につき一行で行優先順に書き出します。

write_dataarraymake_arrayで生成された配列を 行優先順でスラブ毎に改行して書き出します。 高次元スラブは更に改行で分割されます。

write_dataはハッシュ配列を 1行に、キーそれぞれに結合したリストが続くように書き出します。

write_dataは入れ子のリストを それぞれの部分リストを1行に書き出します。

write_dataはフラットなリストすべてを1行に書き出します。

デスティネーションDはファイル名かストリームかもしれません。 デスティネーションがファイル名の時、 グローバル変数file_output_appendは 出力ファイルに追加されるか上書きされるか決定します。 デスティネーションがストリームの時、 write_dataは データすべてが書かれた後、特殊なアクションを取ります; 特にストリームは開いたままとなります。

separator_flagの認識される値は comma, pipe, semicolon, spaceです。 もしseparator_flagが指定されないなら、ファイルは空白で区切られていると仮定されます。


69.3 Functions and Variables for binary input and output

関数: assume_external_byte_order (byte_order_flag)

numericalioに バイナリデータを読み書きするためのバイトオーダーを知らせます。 byte_order_flagの2つの値が認識されます: リトルエンディアンバイトオーダーとも呼ばれる最下位バイト優先を示すlsb; と ビッグエンディアンバイトオーダーとも呼ばれる最上位バイト優先を示すmsb

もし指定されないなら、 numericalioは外部のバイトオーダーは最上位バイト優先を仮定します。

関数: openr_binary (file_name)

file_nameという名前のファイルを読むための 8ビット符号なしバイトの入力ストリームを返します。

関数: openw_binary (file_name)

file_nameという名前のファイルに書き込むための 8ビット符号なしバイトの出力ストリームを返します。

関数: opena_binary (file_name)

file_nameという名前のファイルに追加するための 8ビット符号なしバイトの出力ストリームを返します。

関数: read_binary_matrix (S, M)

Mが一杯になるかソースが尽きるまで、 ソースSから行列Mにバイナリの8バイト浮動小数点数を読み込みます。 Mの要素は行優先順で読み込まれます。

ソースSはファイル名かストリームかもしれません。

ソースの要素のバイトオーダーは assume_external_byte_orderで指定されます。

関数: read_binary_array (S, A)

Aが一杯になるかソースが尽きるまで、 ソースSから配列Aにバイナリの8バイト浮動小数点数を読み込みます。 Mの要素は行優先順で読み込まれます。

ソースSはファイル名かストリームかもしれません。

ソースの要素のバイトオーダーは assume_external_byte_orderで指定されます。

関数: read_binary_list (S)
関数: read_binary_list (S, L)

read_binary_list(S)は バイナリ8バイト浮動小数点数の数列として ソースSの内容全体を読み込み、それをリストとして返します。 ソースSはファイル名かストリームかもしれません。

read_binary_list(S, L)は リストLが一杯になるかソースが尽きるまで、 ソースSから バイナリ8バイト浮動小数点数を読み込みます。

ソースの要素のバイトオーダーは assume_external_byte_orderで指定されます。

関数: write_binary_data (X, D)

Writes the object バイナリ8バイトIEEE 754浮動小数点数で構成される オブジェクトXを ディスティネーションDに書き込みます。 他の種類の数は8バイト浮動小数点に強制変換されます。 write_binary_dataは非数データを書くことはできません。

The object オブジェクトXはリストか、入れ子のリスト、行列、 もしくは、arraymake_arrayで生成された配列であり得ます; Xは未宣言配列や他のいかなる種類のオブジェクトもありえません。 write_binary_dataは 入れ子のリスト、行列、配列を行優先順に書き込みます。

デスティネーションDはファイル名かストリームかもしれません。 デスティネーションがファイル名の時、 グローバル変数file_output_appendが 出力ファイルに追加されるか上書きされるか決めます。 デスティネーションがストリームの時、 データすべてが書かれた後write_binary_dataは特別な動作は何もしません; 特に、ストリームは開かれたままです。

デスティネーションの要素のバイトオーダーは assume_external_byte_orderで指定されます。


Next: , Previous:   [Contents][Index]