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

2.11.1 读写 Mathematica 文件

当使用基于文本的 Mathematica 界面时,就需要经常读写含有定义和结果的文件. 1.11.1 节对此已进行了一般地讨论,这一节给出细节.

读文件

显示文件 factors 的内容

读入一个文件,返回值是文件的最后一个表达式

Mathematica 找不到所要文件时,它显示一个信息,返回值为 $Failed

Mathematica 的输入文件可以包含任意数目的表达式. 每个表达式必须从新的一行开始,它 可以占有许多行. 在交互式的 Mathematica 对话中,当表达式完成后 就进行处理. 但是在一个文件中,可以在任何位置插入一个空行, 这不产生任何影响.
<<file 读入文件时,Mathematica 返回值为文件中的最后一个表达式, 为了不让此结果显示,可以在文件的最后一个表达式中用分号,或者直接 在最后加 Null.
Mathematica 读入文件时发现语法错误,它就报告此错误,忽略文件余下的部分, 返回值为 $Failed. 但如果语法错误发生在使用 BeginPackage 和其它上下文操作函数 的程序包中,Mathematica 就尽量恢复读入程序包以前的状态.

向文件中写表达式

将一个表达式写入文件

tmp 这是该文件的内容

在同一文件中加了另一

表达式此时文件中有两个表达式

expr >>> file 时,Mathematica 把新表达式加在文件之后,而用 expr >> file 时,Mathematica 清除文件中所有内容,然后把 expr 写入文件.
当用 >>>>> 向文件写入表达式时,这些表达式一般是用输入形式,以便再将他们读入 Mathematica. 有时需要用别的形式保存表达式,这可以通过将这些表达式包含在 OutputForm 等格式指令中来实现.

这是按输出形式将一个表达式写入文件 tmp

此时 tmp 文件中的表达式是输出形式

使用文件的最常用目的是保存 Mathematica 对象的定义,以便在随后的 Mathematica 对话中再读入它们. 算符 >>>>> 将表达式保存在文件中. 也可以用函数 Save 按适当的形式去保存 Mathematica 对象的完整定义以便在随后 的 Mathematica 对话中执行.

写出定义

给符号 a 指定一个值

Save 将a的定义写入文件

这是在文件中保存的定义

Mathematica 中定义一个对象时,该定义常常依赖于前面定义的其它对象. 如果要在后面的 Mathematica 对话中重新构造这个对象的定义,这就需要保存该定义 本身和与它有关的其它对象的定义. 函数 Save 检查要保存的定义,自动地保存 与它们有关的定义. 但为了不存入太多不必要的内容,Save 不包含属性为 Protected 的符号的定义.它认为这些符号的定义是内部给出的. 为了照顾 这些定义,在一个新的 Mathematica 对话中读入从 Save 产生的输出时, 必须保证对象的定义与以前的完全一致.

这里定义了与以前给出的符号有关的函数 f

这里将 f 的完整定义存入一个文件

该文件不仅包含了f本身的定义,也有f所依赖符号a 的定义

函数 Save 利用输出形式 DefinitionFullDefinition,它们显示 Mathematica 符号的定义. 有时直接用这些输出形式是很方便的.

输出形式 Definition[f]f 的定义序列

FullDefinition[f] 包含 f 所依赖对象的定义

建立 Mathematica 输入文件时,通常文件仅包含可直接阅读和修改的文本, 有时还需要对文件编码,使得它们不能直接阅读和修改,但还要求此文件 能调入 Mathematica 内.这可以用 Mathematica 函数 Encode 实现.

产生和读入代码文件

将表达式按简明文本形式写入文件 tmp

将文件 tmp 的代码形式写入文件 tmp.x

这里是代码文件的内容,能识别的部分仅是在开头的 Mathematica 注解

即使代码文件,也可以用 << 读入 Mathematica

按 Mathematica 内部格式保存定义

在必须读入很大或很复杂的定义时,按 Mathematica 内部格式保存比 按文本保存方便. 这可以用 DumpSave 实现.

Mathematica 内部格式保存f的定义

仍可用 << 去读入这个定义

当一个文件含有 Mathematica 内部定义时,<< 能识别它并进行相应的操作. Mathematica 内部格式在不同的计算机系统有细微的差异. 于是在一个计算机上 产生的 .mx 一般不能在别的计算机上读入.
DumpSave["package`", ... ] 时,Mathematica 就将定义写到名为 package.mx/system/package.mx 等文件中,其中 system 指明所使用的 计算机系统.

这里产生的文件名反映了所使用的计算机系统

<< 自动选择名称与所用计算机系统相关的文件

保存Mathematica的完整状态