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