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

2.11.9 搜索文件

寻找含有指定文本的行

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

返回文件中所有含有文本 is 的行

文件中没有含有文本 fourth

在默认状态下,FindList 扫描文件的相继行,返回包含指定文本的这些行. 一般可以令 FindList 扫描相继的记录,返回包含指定文本的这些记录. 在 ReadList 中,选项 RecordSeparators 告诉 Mathematica 将哪些字符串作为记录分隔 符. 在 RecordSeparators 设置中给出字符串对列表可以指定不同的左、 右分隔符. 这样就可以使 FindList 搜索在指定的分隔符对中间的文本.

找出以CenterDot作为结束符含有 And 的语句

FindList 选项

仅找出文件中一行开头出现的 Here

一般地,FindList 查找出现在一个记录中任何位置的文本. 设置 WordSearch->TrueFindList 去找出在记录中是词的文本. 选项 WordSeparators 指定词分隔符.

文本 th 确实出现在文本中,但它不是一个词,所以 FindList 未找到

在多个文件中搜索

这里在文件 textfile 的两个拷贝中搜索 third

通常对由 FileName 等函数产生的文件列表调用 FindList 是很有用的.

在一个外部程序输出中寻找文本

运行外部 Unix 命令 date

找出其输出中的时间

找出相继出现的文本

FindList 寻找在一个文件中出现的指定文本. 有时需要递增地寻找 相继出现的文本. 这可以用 Find 来实现.
使用 Find 时首先要用 OpenRead 去打开一个输入流. 然后每次对这个流调用 Find 时,它就搜寻给定的文本,并将文件中的当前点移到所找出的记录之后. 这样就可以多次调用 Find 去找出相继的文本.

对文件 textfile 打开一个输入流

找到第一个包含 And 的行

再次调用 Find 给出下一个包含 And 的行

关闭输入流

有一个输入流时,可混合调用 Find, Skip Read. 但调用了 FindListReadList 后,Mathematica 就立即读到文件末尾.

打开一个输入流

找出第一个包含 second 的行. 将文件中当前点移到下一行开始

Read 就可以读出位于这一行开始的词

跳过随后的 3 个词

Mathematica 在其余的文本中寻找 is,并将整个记录作为输出

关闭输入流

寻找和设定流中的当前位置

函数 Read, SkipFind 等在一个流上按一个完整序列的形式运行,这些函数中的某一个 被调用一次时,该流中的当前点就向前移动.
有时需要知道一个流中当前点的位置,并能重新设置它. 在大部分计算机系统中, StreamPosition 返回到当前点的位置,它给出的是一个从流的开始算起的字节数.

打开一个流

当第一次打开一个文件时,当前点在开头,StreamPosition 返回值为 0

读文件的第一行

现在当前点已前移

这里将流的位置向后移动一些

现在 Read 返回的是第一行其余的部分

关闭这个流