2.11.9 搜索文件寻找含有指定文本的行 这是一个包含一些文本的文件
返回文件中所有含有文本 is 的行
Out[2]= |  |
文件中没有含有文本 fourth
Out[3]= |  |
在默认状态下,FindList 扫描文件的相继行,返回包含指定文本的这些行. 一般可以令 FindList 扫描相继的记录,返回包含指定文本的这些记录. 在 ReadList 中,选项 RecordSeparators 告诉 Mathematica 将哪些字符串作为记录分隔 符. 在 RecordSeparators 设置中给出字符串对列表可以指定不同的左、 右分隔符. 这样就可以使 FindList 搜索在指定的分隔符对中间的文本. 找出以 作为结束符含有 And 的语句
Out[4]= |  |
FindList 选项 仅找出文件中一行开头出现的 Here
Out[5]= |  |
一般地,FindList 查找出现在一个记录中任何位置的文本. 设置 WordSearch->True 让 FindList 去找出在记录中是词的文本. 选项 WordSeparators 指定词分隔符. 文本 th 确实出现在文本中,但它不是一个词,所以 FindList 未找到
Out[6]= |  |
在多个文件中搜索 这里在文件 textfile 的两个拷贝中搜索 third
Out[7]= |  |
通常对由 FileName 等函数产生的文件列表调用 FindList 是很有用的. 在一个外部程序输出中寻找文本 运行外部 Unix 命令 date
Out[8]= |  |
找出其输出中的时间
Out[9]= |  |
找出相继出现的文本 FindList 寻找在一个文件中出现的指定文本. 有时需要递增地寻找 相继出现的文本. 这可以用 Find 来实现. 使用 Find 时首先要用 OpenRead 去打开一个输入流. 然后每次对这个流调用 Find 时,它就搜寻给定的文本,并将文件中的当前点移到所找出的记录之后. 这样就可以多次调用 Find 去找出相继的文本. 对文件 textfile 打开一个输入流
Out[10]= |  |
找到第一个包含 And 的行
Out[11]= |  |
再次调用 Find 给出下一个包含 And 的行
Out[12]= |  |
关闭输入流
Out[13]= |  |
有一个输入流时,可混合调用 Find, Skip 和 Read. 但调用了 FindList 或 ReadList 后,Mathematica 就立即读到文件末尾. 打开一个输入流
Out[14]= |  |
找出第一个包含 second 的行. 将文件中当前点移到下一行开始
Out[15]= |  |
Read 就可以读出位于这一行开始的词
Out[16]= |  |
跳过随后的 3 个词 Mathematica 在其余的文本中寻找 is,并将整个记录作为输出
Out[18]= |  |
关闭输入流
Out[19]= |  |
寻找和设定流中的当前位置 函数 Read, Skip 和 Find 等在一个流上按一个完整序列的形式运行,这些函数中的某一个 被调用一次时,该流中的当前点就向前移动. 有时需要知道一个流中当前点的位置,并能重新设置它. 在大部分计算机系统中, StreamPosition 返回到当前点的位置,它给出的是一个从流的开始算起的字节数. 打开一个流
Out[20]= |  |
当第一次打开一个文件时,当前点在开头,StreamPosition 返回值为 0
Out[21]= |  |
读文件的第一行
Out[22]= |  |
现在当前点已前移
Out[23]= |  |
这里将流的位置向后移动一些
Out[24]= |  |
现在 Read 返回的是第一行其余的部分
Out[25]= |  |
关闭这个流
Out[26]= |  |
|