导入和导出

导入和导出数据
导入["文件",“表格”]
从文件导入数据表
导出["文件",列表,“表格”]
出口列表将文件作为数据表
导入和导出表格数据。
这会将数字数组导出到文件外部文件:
这是文件的内容外部文件:
这将导入的内容外部文件作为数据表:
导入["文件",“表格”]将处理多种表格数据,尽可能自动推断格式的详细信息。导出["文件",列表,“表格”]写出由制表符分隔的数据,数字用C或Fortran给出形状类似,如2.3E5英寸等等。
导入["名称.提取"]
使用从文件名导出的格式导入数据
导出["名称.提取",快递]
以从文件名导出的格式导出数据
导入和导出常规数据。
表格数据的一些常见格式。
导入导出不仅可以处理表格数据,还可以处理与图形、声音、表达式甚至整个文档相对应的数据。导入导出通常可以通过查看存储数据的文件的扩展名来推断数据的适当格式。“导出图形和声音”“导入和导出文件”更详细地讨论如何导入导出工作。请注意,您还可以使用导入导出操作二进制数据的原始文件。
这将导入JPEG格式的图形:
$导入格式
导入系统支持的格式
$导出格式
导出系统支持的格式
查找支持的导入和导出格式的完整列表。
导入和导出文件
导入["文件",“列表”]
导入一个文件中数据的维度列表
导出["文件",列表,“列表”]
出口列表作为一个文件数据维度列表
导入["文件",“表格”]
输入2文件中数据的维表
导出["文件",列表,“表格”]
出口列表作为两个文件维度数据表
导入["文件",“CSV”]
以逗号输入数据分隔格式
导出["文件",列表,“CSV”]
以逗号形式导出数据分隔格式
导入和导出数据列表和表。
这会将数据列表导出到文件输出1:
以下是文件的内容:
这会将内容重新导入Wolfram语言:
如果您想纯粹在Wolfram Language中使用数据,那么将其保存在文件中的最佳方法通常是作为完整的Wolfram语言表达式,保留其所有结构,如中所述“读写Wolfram语言文件:文件和流”但是,如果您想与其他程序交换数据,通常以简单的列表或表格格式保存数据会更方便。
这导出一个二多维数据数组:
必要时,用C或Fortran编写数字类似“E”符号:
这会将数组导入到Wolfram语言中:
如果您有一个文件,其中每一行由一个数字组成,则可以使用导入["文件",“列表”]以数字列表的形式导入文件内容。如果每一行由由制表符或空格分隔的数字序列组成,则导入["文件",“表格”]将生成数字列表。如果文件包含非数字项,则这些项将作为Wolfram语言字符串返回。
这将导出文本数据和数字数据的混合:
以下是导出的数据:
这会将数据导入到Wolfram语言中:
使用输入表单,可以显式查看字符串:
导入["文件",“列表”]
将每行视为单独的数字或其他数据项
导入["文件",“表格”]
将每行上的每个元素视为单独的数字项或其他数据项
导入["文件",“字符串”]
将整个文件视为单个字符串
导入["文件",“文本”]
将整个文件视为单个文本字符串
导入["文件",{“文本”,“行”}]
将每一行视为一个文本字符串
导入["文件",{“文本”,“文字”}]
将每个分隔的单词视为一个文本字符串
导入不同格式的文件。
这将创建一个包含两行文本的文件:
以下是文件的内容:
这会将整个文件作为单个字符串导入:
这将以文本行列表的形式导入文件:
这会将文件导入为以空格分隔的单词列表:
导出图形和声音
Wolfram语言允许您以多种格式导出图形和声音。如果你使用Wolfram语言的笔记本电脑前端,那么你通常可以使用计算机系统上的标准机制将图形和声音直接复制粘贴到其他程序中。
导出["名称.提取",绘图]
以从文件名导出的格式将图形导出到文件
导出["文件",图形,"格式"]
以指定格式导出图形
导出["!命令",绘图,"格式"]
将图形输出到外部命令
导出["文件",{1,2,},]
导出动画的图形序列
导出字符串[绘图,"格式"]
生成导出图形的字符串表示
导出Wolfram语言图形和声音。
“每股收益”
封装的PostScript( .eps(.eps) )
“PDF”
Adobe Acrobat可移植文档格式( .pdf格式 )
“SVG”
可缩放矢量图形( .svg文件 )
“图片”
Macintosh PICT
“WMF”
Windows图元文件格式( .wmf格式 )
“畅通节能法”
畅通节能法( .tif码 , .tiff型 )
“GIF”
GIF和动画GIF( .gif文件 )
“JPEG”
JPEG格式( .jpg格式 , .jpeg格式 )
“巴布亚新几内亚”
PNG格式( .png格式 )
“BMP”
Microsoft位图格式( .bmp(.bmp) )
“PCX”
PCX格式( .pcx(磅/平方英寸) )
“XBM”
X窗口系统位图( .xbm型 )
“PBM”
可移植位图格式( .pbm(磅/分钟) )
“PPM”
便携式pixmap格式( .ppm )
“PGM”
便携式灰度图格式( 每加仑 )
“PNM”
可移植anymap格式( .pnm格式 )
“DICOM”
DICOM医学成像格式( .dcm格式 , .dic码 )
“AVI”
音频视频交错格式( .avi文件 )
Wolfram语言支持的典型图形格式。第一组中的格式与分辨率无关。
这将生成一个绘图:
这会将绘图导出为Encapsulated PostScript格式的文件:
当您导出Wolfram语言之外的图形时,通常必须指定图形渲染的绝对大小。您可以使用图像大小选择导出.
图像大小->x个使图形的宽度为x个打印机点数;图像大小->72xi(西)从而使宽度xi(西)英寸。默认设置是生成四英寸宽的图像。图像大小->{x个,}缩放图形,使其适合x个×区域。
图像大小自动
打印机点的绝对图像大小
“ImageTopOrientation”顶部
图像在文件中的方向
图像分辨率自动
图像的分辨率(dpi)
的选项导出.
在Wolfram语言中,图形的操作方式完全独立于计算机屏幕或图形最终将在其上呈现的其他输出设备的分辨率。
许多程序和设备接受分辨率较高的图形独立格式,如Encapsulated PostScript(EPS)。但有些要求将图形转换为具有特定分辨率的光栅或位图。这个图像分辨率的选项导出允许您确定应使用的分辨率(以每英寸点数(dpi)为单位)。您设置的分辨率越低,图像的质量越低,但图像存储所需的内存也越少。对于屏幕显示,典型分辨率为72 dpi及以上;对于打印机,300dpi及以上。
“DXF”
AutoCAD图形交换格式( .dx英尺 )
“STL”
STL立体光刻格式( .stl文件 )
Wolfram语言支持的典型3D几何格式。
“WAV(加权平均值)”
Microsoft波形格式( .wav格式 )
“澳大利亚”
μ 法律编码( .au码 )
“SND”
声音文件格式( .snd号 )
“AIFF”
AIFF格式( .aif文件 , .aiff文件 )
Wolfram语言支持的典型声音格式。
开发导入转换器
Wolfram Language提供了允许用户编写自己的文件格式转换器并将其与Wolfram语言集成的功能导入导出框架。您可以实现格式转换器并使用导入从任意格式导入数据。
Wolfram系统还包括说明如何实现和注册格式转换器的源代码。这些可以在文件夹中找到$安装目录/系统文件/格式/格式,其中格式是以下之一:巴西存托凭证,DIF公司,中期计划,微笑,冲浪者网格,TGF公司,或TLE公司。注册代码位于文件Import.m或Export.m中,转换器实现位于文件converter.m中。
之间的接口导入低级转换器功能由注册导入(在进口出口`上下文)。本质上,注册导入告诉导入导出框架如何在导入文件格式的特定元素时调用特定函数。
本教程中使用了以下术语:
A类低级函数以文件或流作为输入,并返回包含导入数据的规则列表。有两种类型的低级函数:(1)默认导入程序,在导入未显式注册的元素时由框架调用;和(2)有条件进口商,它导入在的第二个参数中注册的特定元素注册导入.
A类后进口商导入后功能,在的第三个参数中注册注册导入,将低级函数的输出作为输入。
有几种形式的寄存器导入,总结如下。在本教程中,有一些逐步深入的示例,展示了注册导入详细说明。
导入导出`RegisterImport["格式",默认函数]
登记单曲默认函数导入导入类型为的文件时,框架作为默认导入程序“格式”
导入导出`RegisterImport["格式", {"元素1"条件函数1,"元素2"条件函数2, ,默认函数}]
注册多个元素(元素1, 元素2, )和各自的转换器功能(条件函数1, 条件函数2, )导入框架;也注册默认函数当请求的元素与任何注册的元素不匹配时使用
导入导出`RegisterImport["格式", {条件函数,默认函数}, {"元素"post函数,"元素4"后置函数4, }]
注册其他转换器功能,其输入是其中一个低级功能的输出

默认进口商

例如,假设您的文件格式包含三个标题行,后跟四列数字。

新格式的注册和实施

一种可能的设计是将标题信息和数字分别导入“页眉”“数据”元素。也可以使用注册导入.
在这种特殊情况下,您要告诉导入导出调用函数的框架MyFormat1`MyFormat1导入导入格式的任何元素时“我的格式1”.
默认情况下,框架将文件名传递给低级函数,因此MyFormat1`MyFormat1导入将文件名和一组选项作为输入。此函数必须以以下形式返回规则列表ElementName->ElementValue.

导入新格式的文件

导入现在可以使用“我的格式1”作为有效的文件格式。

有条件的原始进口商

当一个格式包含许多元素时,使用特定的低级函数导入特定的元素可能是有用且高效的。这可以通过以下形式给出规则列表来实现"元素"->函数作为的第二个参数注册导入。但是,列表必须以默认导入程序的名称结尾,当导入与列表中明确定义的元素不匹配的元素时,将调用该名称。

使用条件导入器注册和实现新格式

此注册告诉导入导出框架如何导入格式的文件“我的格式2”:
(1) 使用MyFormat2`MyFormat2数据导入导入时“数据”元素,和
(2)我的格式2`MyFormat2DefaultImport对于所有其他元素。
低级函数同样具有相同的结构,采用文件名和(可选)选项列表,并以以下形式返回一组规则元素名称->元素值.

使用MyFormat2导入

的导入元素的输出“我的格式2”与的相同“我的格式1”,但现在为这两个不同的元素调用了两个不同函数。

指定子元素

默认情况下,框架使用零件.
对于包含多个大型数据集的文件,直接导入特定数据集可能是有效的。例如,您可以使用“预计违约频率”文件格式。
您可以通过以下形式注册低级函数来指定子元素的导入
{元素,子元素}低级功能.
低级函数的输出必须与表单匹配{元素->{子元素->输出}}.
如前所述,其他低级函数的输出必须是以下形式的规则列表元素->价值.
字符串子元素的导入现在调用适当的低级函数。

后导入程序

可能需要基于其他元素构建元素。例如,如果要导入的数据是表示灰度图像的数字列表,则导入“图像”元素需要首先导入“数据”元素。在本节中,使用“图形”“图像”元素。
当存在匹配的元素名称时,后导入器将条件导入器的输出作为输入;否则,后导入器将默认导入器的输出作为输入。
与条件导入器和默认导入器不同,后导入器只返回元素的值。

使用后导入程序注册和实现一种新格式

为了说明条件导入器和后导入器之间的区别,“我的格式2”扩展了两个附加元素:“图形”“图像”. The“图形”元素通过条件导入器导入。这个“图像”然而,元素是通过后导入器导入的。
下面的注册说明导入导出框架如何导入格式的文件“我的格式3”:
(1) 对于“页眉”“图形”元素,调用相应的条件导入程序,
(2) 对于“图像”元素,首先调用默认导入程序,并将其输出用作的输入MyFormat3`MyFormat3图像导入、和
(3) 对于所有其他元素,请调用默认导入器。
条件导入器和默认导入器的结构与之前相同。
请注意“图形”导入程序必须显式调用默认导入程序并手动提取数据。
自从没有“图像”元素注册为条件导入器“图像”元素将默认导入程序的输出作为输入。

使用MyFormat3导入

从用户的角度来看,使用导入后函数或低级函数实现的元素之间没有区别。
这个“图形”元素注册为条件导入程序:
导入“图像”元素调用后导入器MyFormat3`MyFormat3图像导入:

注册导入选项

注册导入有几个选项,允许极大的灵活性。

“FunctionChannels”和“BinaryFormat”

在上面的示例中,低级函数接受文件名作为参数,函数打开文件的流。框架可以直接传递InputStream(输入流)通过指定“功能频道”->{“流”}作为选项注册导入.
通过指定选项“二进制格式”->真的,该框架将二进制流传递给低级导入器。
的默认值“功能频道”{“文件名”}。的默认值“二进制格式”False(错误).
例子
对于注册为的格式
导入导出`RegisterImport["格式",电子娱乐,{},“功能频道”->{“流”}]
签名电子娱乐电子娱乐[strm_输入流,opts选项___],框架将一个(非二进制)流传递给电子娱乐.

“可用元素”

默认情况下,导入未显式注册为条件导入器或后导入器的元素时,框架会评估默认导入器。如果在默认导入程序中找不到匹配的元素,框架将生成错误消息并返回$失败.
通过指定选项“可用元素”->{元素1,元素2,}当试图导入指定列表中不存在的元素时,框架将直接返回$失败并生成错误消息没有调用任何低级导入程序。
例子
对于注册为的格式
导入导出`RegisterImport["格式",{"元素1":>电子娱乐1,"元素2":>电子娱乐2,电子默认功能},{},“可用元素”->{"元素1","元素2",“数据”}]
当你打电话的时候导入[文件名,{"格式","foo公司"}],框架将返回$失败不评估默认导入程序电子默认功能.
请注意,指定“可用元素”->{"元素1",“数据”}在这种情况下,导入[文件名,{"格式","元素2"}]将返回$失败因为"元素2"不在指定的列表中“可用元素”.

“默认元素”

指定“DefaultElement”->元素,其中元素是元素的名称,框架导入元素当没有导入元素已指定。

“来源”

选项“来源”->{路径1,路径2,}可用于指定包含低级函数定义的.m、.mx或Wolfram符号传输协议(WSTP).exe文件的文件路径。框架将自动使用获取安装适用于源文件。
开发导出转换器
Wolfram语言提供了允许开发人员实现文件格式转换器的功能,以便和Wolfram Language集成导入导出框架。您可以实现格式转换器并使用导出从自定义格式导出数据。
之间的接口导出低级转换器功能由寄存器导出(在进口出口`上下文)。本质上,寄存器导出告诉导入导出框架如何在将Wolfram语言表达式导出为文件格式时进行各种函数调用。
Wolfram语言还包括各种转换器的源代码。这些都放在文件夹中$InstallationDirectory($安装目录)/系统文件/格式/格式,其中格式是以下之一:巴西存托凭证,DIF公司,中期计划,微笑,冲浪者网格,TGF公司,或TLE公司。注册码可以在文件Import.m和/或Export.m中找到,转换器源位于文件converter.m中。

格式注册

导出必须首先注册格式。注意,与注册导入格式,寄存器导出只接受一个函数。
导入导出`RegisterExport["格式",功能]
登记功能导出将文件导出到类型时的框架格式

编写转换器函数

对于本例,想象一种文件格式,它通过每个字符的ASCII代码对ASCII字符串进行编码,每个代码由一个空格分隔。此格式的转换器功能可以添加到导入导出框架使用寄存器导出.
当您使用导出[文件.提取,"字符串",“我的导出格式”],框架同时传递输出文件名和数据,字符串导出器,因此可以如下编写导出器函数的示例。
“我的导出格式”现在可以用于导出就像其他文件格式一样。

转换器功能的元件和选项

不同于导入,始终导入元素,导出可以直接导出表达式(如上面的示例)或规则列表,格式为元素名称->元素值.
元素可以指定为选项,这意味着它们将始终与所有其他选项一起传递给转换器函数。下面是一个简单的转换器,用于说明元素和选项的处理。
使用表达式直接导出:
通过元素导出:
通过元素导出,带选项:
通过元素导出,元素注册为选项:
请注意,通过指定“选项”->{“opt1”,“opt2”},元素“opt1”“opt2”作为选项自动传递给出口商。
进出口转换器的自动加载
除了导入导出,Wolfram语言带有自动加载机制,简化了导入导出框架。

自动加载与手动加载

手动加载

教程中给出了手动加载转换器的示例,其中注册的命令“我的格式1”显式计算。

自动加载

通过将格式注册和转换器放在适当的位置,Wolfram语言可以自动加载格式注册。自动加载导入导出可以通过以下步骤实现转换器:
(在以下步骤中,您可以使用$UserBaseDirectory$BaseDirectory.)
1.如果目录$UserBaseDirectory/系统文件/格式不存在,请创建它。
2.低于$UserBaseDirectory/SystemFiles/Formats,创建一个名为格式,其中格式要自动加载的格式的名称。
3.内部格式目录,放置导入导出`RegisterImport[]代码块到名为导入。.
例如,在目录中$UserBaseDirectory/SystemFiles/Formats/MyFormat1,文件导入。将包含以下内容。
4.内部格式目录中,将转换器源代码放入名为转换器。.
例如,在目录中$UserBaseDirectory/SystemFiles/Formats/MyFormat1,文件转换器。将包含以下内容。
5.文件到位后,当Wolfram语言启动时,$导入格式将包含条目“我的格式1”、和导入[ 文件,{“我的格式1”,“页眉”}]将进行适当评估。
事实上,Wolfram语言支持的所有格式都是使用这种自动加载机制注册的,格式注册位于$安装目录/系统文件/格式.
此外,Wolfram语言中的几种格式在目录中以源格式提供$安装目录/系统文件/格式.

登记机制详情

目录名必须与格式名匹配
使用自动加载机制时,文件夹名称必须与格式名称匹配。使用下面的格式别名可以有效地重命名格式。
如果源文件不在标准位置,则必须明确指定“源”
使用自动加载机制时导入/导出框架假定源文件位于$UserBaseDirectory/系统文件/格式/格式/转换器.m或$BaseDirectory/系统文件/格式/格式/Converter.m。如果源文件位于其他位置,则必须使用“来源”选项。例如,“来源”->{“MyFormatConverter/Converter.m”,“MyFormatConverter/Converter2.m”}.
解决冲突
如果发生冲突(例如“我的格式”驻留在两者中的目录$安装目录/系统文件/格式和$UserBaseDirectory/SystemFiles/Formats)中的注册$UserBaseDirectory优先级最高,其次是$BaseDirectory$安装目录.

定义格式别名

定义格式别名通常很有用,这样您可以引用具有多个不同名称的格式。假设您想使用“MyOtherFormat”“MyDefaultFormat”作为的别名“我的格式1”。您可以通过创建文件来执行此操作$UserBaseDirectory/SystemFiles/Formats/FormatMappings.m包含以下内容。
别名的工作方式与原始格式相同:
原始格式返回相同的信息:
生成和导入TeX
Wolfram System笔记本电脑为创建技术文档提供了一个复杂的环境。但是,特别是如果你想将你的作品与TeX中的现有材料合并,你可能会发现使用起来很方便TeXForm(TeXForm)将Wolfram语言中的表达式转换为适合输入TeX的形式。
TeXForm(TeXForm)[快递]
打印快递以TeX输入形式
TeX的Wolfram语言输出。
以下是以标准Wolfram语言形式打印的表达式:
以下是TeX输入形式中的表达式:
ToExpression(目标表达式)["输入",TeXForm(TeXForm)]
将TeX输入转换为Wolfram语言
将TeX字符串转换为Wolfram语言。
这会将TeX字符串转换为Wolfram语言。注意字符串中需要的双反斜杠:
除了能够将单个表达式转换为TeX外,Wolfram系统还提供翻译完整笔记本的功能。这些功能通常可以从文件 另存为。。。笔记本电脑前端的菜单。
通过Web交换材料
导出["文件.html“,编号]
保存笔记本编号以HTML格式
将笔记本转换为HTML。
导出有许多适用于HTML导出的选项,允许您指定如何为具有不同功能的web浏览器转换笔记本。
数学MLForm[快递]
打印快递以MathML形式
数学MLForm[标准格式[快递]]
使用标准格式而不是传统的数学符号
ToExpression(目标表达式)["一串",数学MLForm]
将MathML字符串解释为Wolfram语言输入
转换为MathML和从MathML。
以下是以MathML格式打印的表达式:
如果您将MathML粘贴到Wolfram System笔记本中,Wolfram系统将自动尝试将其转换为Wolfram语言输入。可以使用复制为笔记本电脑前端的菜单。
导出["文件.xml“,快递]
以XML格式导出
导入["文件.xml“]
从XML导入
导入字符串["一串",“XML”]
从XML字符串导入数据
XML导入和导出。
与Wolfram语言表达式类似,XML是表示数据的通用格式。Wolfram语言自动将特定类型的表达式转换为特定类型的XML,或从特定类型的XML转换为特定的XML。MathML就是一个例子。另一个例子是图形的SVG。
如果您要求Wolfram语言导入一段通用的XML,它将生成一个SymbolicXML表达式。表单的每个XML元素<元素 属性='val值'>数据</元素>被转换为形式的Wolfram语言符号XML表达式XML元素["元素",{"属性"->"val值"},{数据}]。一旦您将一段XML导入为SymbolicXML,就可以使用Wolfram语言强大的符号编程功能来操作您得到的表达式。然后您可以使用导出以XML格式导出结果。
这将生成一个SymbolicXML表达式XML元素代表XML字符串中的元素:
SymbolicXML中现在有两个嵌套级别:
这对SymbolicXML进行了简单的转换:
这将结果显示为XML字符串:
导入[“http://网址",]
从任何可访问的URL导入文件
导入[“ftp://网址",]
从FTP服务器导入文件
从web源导入数据。
这将从网站导入图片: