WOLFRAM 语言教程

开发导出转换器

Mathematica 提供了允许开发人员实现文件格式转换的功能,该功能与 Mathematica ImportExport 框架相集成. 用户可以实现格式转换,并且使用 Export 从自定义格式导出数据.

Export 和底层转换函数之间的界面由 指定(在 上下文下). 大体上,当把 Mathematica 表达式导出到一个文件格式时, 告诉 ImportExport 框架如何产生不同的函数调用.

Mathematica 也提供了不同转换器的源代码. 这些代码位于文件夹$InstallationDirectory/SystemFiles/Formats/format 中,其中 format 是其中之一:BDFDIFMTP SMILESSurferGridTGF、或 TLE. 注册代码位于文件 Import.m 和/或 Export.m 中,而转换器源代码位于文件 Converter.m.

格式注册

必须首先注册一个 Export 格式. 注意,与注册一个 Import 格式不同, 只接受一个函数.

ImportExport`RegisterExport["format",function]当把一个文件导出到格式 format 时,注册 function 被用于 Export 框架中

编写转换函数

对于这个例子,考虑一个通过每个字符的 ASCII 码对一个 ASCII 字符串进行编码的文件,其中每个编码用单个空格分隔. 该格式的转换器函数可以使用 添加到 ImportExport 框架中.

In[9]:=
Click for copyable input

当我们使用 Export[file.ext,"str","MyExportFormat"] 时,该框架把输出文件名和数据 str 传递给导出器,使得一个范例导出器函数可以按如下方式编写:

In[22]:=
Click for copyable input

可以在 Export 中与任何其它文件格式一样使用:

转换函数的元素和选项

Import 总是导入元素不同,Export 可以直接导出一个表达式(与上面的例子相同)或者形如 的规则列表.

元素可以被指定为选项,意味着它们以及所有其它选项可以被传递给转换器函数. 下面我们使用一个简单的转换器来说明元素和选项的处理.

In[11]:=
Click for copyable input
In[12]:=
Click for copyable input
直接使用表达式导出:
通过元素导出:
通过带有选项的元素导出:
通过元素导出,其中的元素注册为选项:

注意,通过指定 ,元素 自动作为选项传递给导出器.