WOLFRAM 语言教程

自动加载导入/导出转换器

ImportExport 界面外,Wolfram 语言中还自带一个自动加载机制,使 ImportExport 构架所用的格式注册简化.

自动与手动加载

手动加载

手动加载转换器的范例在教程中给出,在教程中我们对注册 的指令执行显式计算.

Click for copyable input
Click for copyable input

自动加载

通过在适当位置放置格式注册和转换器,Wolfram 语言能够自动加载格式注册. ImportExport 转换器的自动加载可以通过下述步骤实现:

(在下述步骤中,您可以使用 $UserBaseDirectory$BaseDirectory.)

1. 如果目录 $UserBaseDirectory/SystemFiles/Formats 不存在,则创建该目录.

2.在 $UserBaseDirectory/SystemFiles/Formats 下,创建一个名为 format 的目录,其中 format 为要自动加载的格式名称.

3. 在 format 目录内部,将代码块 放到名为 的文件内.

举例来说,在目录 $UserBaseDirectory/SystemFiles/Formats/MyFormat1 中,文件 含有如下内容:

Click for copyable input

4. 在 format 目录内部,将转换器源代码放入名为 的文件内.

例如,在目录 $UserBaseDirectory/SystemFiles/Formats/MyFormat1 内,文件 含有如下内容:

Click for copyable input

5. 有了这些文件,当 Wolfram 语言启动时,$ImportFormats 将包含 一项,并且Import[ file,{"MyFormat1","Header"}] 将适当计算.

事实上,Wolfram 语言所支持的所有格式均使用自动加载机制注册,其中格式注册位于 $InstallationDirectory/SystemFiles/Formats.

此外,Wolfram 语言中的多种格式以源码形式存在于目录 $InstallationDirectory/SystemFiles/Formats 下.

注册机制细节

目录名必须与格式名匹配

使用自动加载机制时,文件夹名称必须与格式名匹配. 格式可以通过使用下列格式别名有效地进行重命名.

如果源文件不在标准位置,"Sources" 必须要显式给出

使用自动加载机制时,Import/Export 架构假定源文件位于 $UserBaseDirectory/SystemFiles/Formats/format/Converter.m 或$BaseDirectory/SystemFiles/Formats/format/Converter.m. 如果源文件位于其它位置,则必须使用 选项显式声明. 例如,

.

解决冲突

如果存在冲突(例如, 目录同时位于 $InstallationDirectory/SystemFiles/Formats 和 $UserBaseDirectory/SystemFiles/Formats),则 $UserBaseDirectory 中的注册具有最高优先级,其次是 $BaseDirectory$InstallationDirectory.

定义格式别名

定义格式别名往往很有用,这使得您可以用多个不同名称来指定一个格式. 假设您想要使用 作为 的别名,您可以通过创建含有下述内容的文件$UserBaseDirectory/SystemFiles/Formats/FormatMappings.m 实现:

Click for copyable input
别名具有与原格式同样的工作方式.
In[5]:=
Click for copyable input
Out[5]=
原格式返回同样的信息.
In[7]:=
Click for copyable input
Out[7]=