此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.1)

2.11.8 读入文件数据

<< 可以读入含有用输入形式给出的 Mathematica 表达式的文件. 但有时还需要 读入其它格式的数据文件. 例如,输入含有由外部程序产生的, 用空格分 隔的数据序列. 这些数据不能作为 Mathematica 输入直接读进.函数 ReadList 可以从文件或输入流取这些数据,并将它们转化为一 个 Mathematica 列表.

从文件中读数字

这里是一个数字文件

读入文件中所有数字,返回值是它们的列表

读入数字块

分别将文件中相继的两个数字组成一个列表

分别将文件中的每行组成一个列表

ReadList 可以处理 Fortran 中 "E" 一类记号的数字. 例如 ReadList2.5E+5 读入为  . ReadList 可以处理任意精度的数字.

这里是含有一个 Fortran 型 "E" 记号数字的文件

ReadList 可以处理这一类型的数字

读入各种类型的对象

ReadList 不仅能读入数字,还可以读入其它类型的对象. 对象的类型用 Number 等符号指定.

这里是包含文本的一个文件

这里产生文件中的字符列表,每个元素是单个字符的字符串

这里是对应于文件中每一个字节的整数代码

这里将文件中每行的数据分别放在一个集合中

读入的对象类型

这里返回的是文件 strings 中词的列表

ReadList 可以从一个文件读入词. 它将词看作由词定界符分隔的字符串序列. 可以设置选项 WordSeparator 去指定要处理的字符串作为词分隔符. 默认的设置包括空格键和跳格键,但不包括标准的标点符号. 注意, 相继词可以用任意数量的词分隔符来分隔. 这些分隔符在 ReadList 的返回 值中不作为实际词的任何部分.

ReadList 选项

将文件 strings 中的文本读入为一系列词,用字母 e. 作为分隔符

Mathematica 将任意数据文件看作一个记录序列.默认每行是一个独立的记录. 一般可以设置选项 RecordSeparator 去给出记录的分隔符列表. 注意, 词不能包含记录分隔符. 与词分隔符相同,在相继的记录间可以有任意多 个记录分隔符,这些分隔符不是记录的任何部分.

默认该文件的每行是一个记录

Out[13]//InputForm=

这是由三个句子组成的文件,每句用句号结束

这里包含的句号和换行都是记录分隔符

将每句中的词分别放入几个列表中

设置 RecordSeparators 选项

这里是包括一些文本的文件

读入文件 source 中的所有文本,返回值是一个字符串

Out[18]//InputForm=

给出文件中位于 (: :) 之间部分的列表

通过选择适当的分隔符,可以选出文件中的特定部分

Mathematica 允许在相继的记录或词中间使用任意数量的分隔符. 但出现几个分隔符时,有可能会认为在相继的两个分隔符间出现一个空记录 或空词. 这需要设置 NullRecord->TrueNullWord->True 来确定.

这里是一个将:作为词分隔符的文件

这里将重复的:仅作为一个分隔符

这里认为重复的:中有一个空词

在大部分情况下,词用词分隔符分隔,词分隔符本身不作为词. 但有时 用标记词来分隔词是方便的,这些标记词本身也是词. 可以设置选项 TokenWords 来给出一个标记词的列表.

这里是一些文本

这里读入文本,用给定的标记词来分隔文本中的词

可以用 ReadList 从文件读入 Mathematica 表达式. 尽管一个表达式可以持续多行, 但一般情况下,一个表达式用换行结束.

这是一个包括文本的文件,可用作 Mathematica 的输入

这里将 exprs 中的文本读入为 Mathematica 表达式

这里禁止对表达式进行计算

ReadList 可以将读入的对象插入任何 Mathematica 表达式中. ReadList 的第二个变量可以是包含指定读入对象的 NumberWord 等表达式. 例如ReadList["file",  Number, Number ] 将读入的相继 数对插入到集合中. 同样, ReadList["file", Hold[Expression]] 将读入的表达式放在 Hold 内.
ReadList 在读入所指定的一组对象还未结束前就到达文件末尾,它就在还 没有读入的对象处插入特殊符号 EndOfFile.

这里是一个数字文件

在到达文件结束之后,符号 EndOfFile 出现在所需数字的位置

从流和命令中读入

执行 Unix 命令 date,将其输出读入一个字符串

读输入流的函数

ReadList 可以读文件或输入流中的所有数据. 有时每次仅需要读入一块数据, 可能要由此确定下一次所需数据的类型.
当从文件读入单个数据块时,Mathematica 总是记录文件中的当前点. 调用 OpenRead 时,Mathematica 由文件建立一个输入流,将当前点放在文件开头. 用 Read 从文件读入一个对象时,Mathematica 就将当前点放在刚读过的对象之后. 用 Skip 可以使当前点跳过一些对象,而不读入它们.

这里是一个数字文件

这里由文件打开一个输入流

读该文件中的第一个数

读入第二对数

跳过下一个数

读入其余的数

关闭输入流

ReadSkip 中,可以和在 ReadList 中一样地使用 WordSeparatorsRecordSeparators. 注意当读入到文件结束时, 就返回符号 EndOfFile.