2.11.8 读入文件数据用 << 可以读入含有用输入形式给出的 Mathematica 表达式的文件. 但有时还需要 读入其它格式的数据文件. 例如,输入含有由外部程序产生的, 用空格分 隔的数据序列. 这些数据不能作为 Mathematica 输入直接读进.函数 ReadList 可以从文件或输入流取这些数据,并将它们转化为一 个 Mathematica 列表. 从文件中读数字 这里是一个数字文件
读入文件中所有数字,返回值是它们的列表
Out[2]= |  |
读入数字块 分别将文件中相继的两个数字组成一个列表
Out[3]= |  |
分别将文件中的每行组成一个列表
Out[4]= |  |
ReadList 可以处理 Fortran 中 "E" 一类记号的数字. 例如 ReadList 将 2.5E+5 读入为 . ReadList 可以处理任意精度的数字. 这里是含有一个 Fortran 型 "E" 记号数字的文件
ReadList 可以处理这一类型的数字
Out[6]= |  |
读入各种类型的对象 ReadList 不仅能读入数字,还可以读入其它类型的对象. 对象的类型用 Number 等符号指定. 这里是包含文本的一个文件
这里产生文件中的字符列表,每个元素是单个字符的字符串
Out[8]= |  |
这里是对应于文件中每一个字节的整数代码
Out[9]= |  |
这里将文件中每行的数据分别放在一个集合中
Out[10]= |  |
读入的对象类型 这里返回的是文件 strings 中词的列表
Out[11]= |  |
ReadList 可以从一个文件读入词. 它将词看作由词定界符分隔的字符串序列. 可以设置选项 WordSeparator 去指定要处理的字符串作为词分隔符. 默认的设置包括空格键和跳格键,但不包括标准的标点符号. 注意, 相继词可以用任意数量的词分隔符来分隔. 这些分隔符在 ReadList 的返回 值中不作为实际词的任何部分. ReadList 选项 将文件 strings 中的文本读入为一系列词,用字母 e 和 . 作为分隔符
Out[12]= |  |
Mathematica 将任意数据文件看作一个记录序列.默认每行是一个独立的记录. 一般可以设置选项 RecordSeparator 去给出记录的分隔符列表. 注意, 词不能包含记录分隔符. 与词分隔符相同,在相继的记录间可以有任意多 个记录分隔符,这些分隔符不是记录的任何部分. 默认该文件的每行是一个记录 Out[13]//InputForm=
 |
这是由三个句子组成的文件,每句用句号结束
这里包含的句号和换行都是记录分隔符
Out[15]= |  |
将每句中的词分别放入几个列表中
Out[16]= |  |
设置 RecordSeparators 选项 这里是包括一些文本的文件
读入文件 source 中的所有文本,返回值是一个字符串 Out[18]//InputForm=
 |
给出文件中位于 (: 和 :) 之间部分的列表
Out[19]= |  |
通过选择适当的分隔符,可以选出文件中的特定部分
Out[20]= |  |
Mathematica 允许在相继的记录或词中间使用任意数量的分隔符. 但出现几个分隔符时,有可能会认为在相继的两个分隔符间出现一个空记录 或空词. 这需要设置 NullRecord->True 或 NullWord->True 来确定. 这里是一个将:作为词分隔符的文件
这里将重复的:仅作为一个分隔符
Out[22]= |  |
这里认为重复的:中有一个空词
Out[23]= |  |
在大部分情况下,词用词分隔符分隔,词分隔符本身不作为词. 但有时 用标记词来分隔词是方便的,这些标记词本身也是词. 可以设置选项 TokenWords 来给出一个标记词的列表. 这里是一些文本
这里读入文本,用给定的标记词来分隔文本中的词
Out[25]= |  |
可以用 ReadList 从文件读入 Mathematica 表达式. 尽管一个表达式可以持续多行, 但一般情况下,一个表达式用换行结束. 这是一个包括文本的文件,可用作 Mathematica 的输入
这里将 exprs 中的文本读入为 Mathematica 表达式
Out[27]= |  |
这里禁止对表达式进行计算
Out[28]= |  |
ReadList 可以将读入的对象插入任何 Mathematica 表达式中. ReadList 的第二个变量可以是包含指定读入对象的 Number 和 Word 等表达式. 例如ReadList["file", Number, Number ] 将读入的相继 数对插入到集合中. 同样, ReadList["file", Hold[Expression]] 将读入的表达式放在 Hold 内. 当 ReadList 在读入所指定的一组对象还未结束前就到达文件末尾,它就在还 没有读入的对象处插入特殊符号 EndOfFile. 这里是一个数字文件
在到达文件结束之后,符号 EndOfFile 出现在所需数字的位置
Out[30]= |  |
从流和命令中读入 执行 Unix 命令 date,将其输出读入一个字符串
Out[31]= |  |
读输入流的函数 ReadList 可以读文件或输入流中的所有数据. 有时每次仅需要读入一块数据, 可能要由此确定下一次所需数据的类型. 当从文件读入单个数据块时,Mathematica 总是记录文件中的当前点. 调用 OpenRead 时,Mathematica 由文件建立一个输入流,将当前点放在文件开头. 用 Read 从文件读入一个对象时,Mathematica 就将当前点放在刚读过的对象之后. 用 Skip 可以使当前点跳过一些对象,而不读入它们. 这里是一个数字文件
这里由文件打开一个输入流
Out[33]= |  |
读该文件中的第一个数
Out[34]= |  |
读入第二对数
Out[35]= |  |
跳过下一个数 读入其余的数
Out[37]= |  |
关闭输入流
Out[38]= |  |
在 Read 和 Skip 中,可以和在 ReadList 中一样地使用 WordSeparators 和 RecordSeparators. 注意当读入到文件结束时, 就返回符号 EndOfFile.
|