自动加载导入/导出转换器
除 Import 和 Export 界面外,Mathematica 8 中还自带一个自动加载机制,使 Import 和 Export 构架所用的格式注册简化.
自动与手动加载
手动加载
手动加载转换器的范例在教程中给出,在教程中我们对注册
的指令执行显式计算.
自动加载
通过在适当位置放置格式注册和转换器,Mathematica 8 能够自动加载格式注册. Import 和 Export 转换器的自动加载可以通过下述步骤实现:
(在下述步骤中,您可以使用 $UserBaseDirectory 或 $BaseDirectory.)
1. 如果目录 $UserBaseDirectory/SystemFiles/Formats 不存在,则创建该目录.
2.在 $UserBaseDirectory/SystemFiles/Formats 下,创建一个名为 format 的目录,其中 format 为要自动加载的格式名称.
3. 在 format 目录内部,将代码块
放到名为
的文件内.
举例来说,在目录 $UserBaseDirectory/SystemFiles/Formats/MyFormat1 中,文件
含有如下内容:
4. 在 format 目录内部,将转换器源代码放入名为
的文件内.
例如,在目录 $UserBaseDirectory/SystemFiles/Formats/MyFormat1 内,文件
含有如下内容:
5. 有了这些文件,当 Mathematica 启动时,$ImportFormats 将包含
一项,并且Import[ file, {"MyFormat1", "Header"}] 将适当计算.
事实上,Mathematica 所支持的所有格式均使用自动加载机制注册,其中格式注册位于 $InstallationDirectory/SystemFiles/Formats.
此外,Mathematica 中的多种格式以源码形式存在于目录 $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 实现:
| In[5]:= |
| Out[5]= | ![]() |
| In[7]:= |
| Out[7]= | ![]() |







