当调用函数时,Octave 会搜索一个目录列表,查找包含该函数声明的文件。这个目录列表称为加载路径(load path)。默认情况下,加载路径包含 Octave 自带的目录列表以及当前工作目录。要查看当前的加载路径,请在不带任何输入或输出参数的情况下调用 path 函数。
可以使用 addpath 和 rmpath 向加载路径添加目录或从中移除目录。例如,以下代码将 ~/Octave 添加到加载路径。
addpath ("~/Octave")
此后,Octave 将搜索 ~/Octave 目录中的函数。
(dir1, …) ¶(dir1, …, option) ¶oldpath = addpath (…) ¶将指定的目录添加到函数搜索路径中。
如果 option 为 "-begin" 或 0(默认值),则将目录名前置到当前路径之前。如果 option 为 "-end" 或 1,则将目录名追加到当前路径之后。添加到路径中的目录必须存在。
除了接受单个目录参数外,也接受由 pathsep 分隔的目录名列表。例如:
addpath ("dir1:/dir2:~/dir3")
新添加的路径在加载路径中的出现顺序与它们在 addpath 参数中的顺序相同。当向加载路径的前端扩展时,参数列表中的最后一个路径最先被添加。当向加载路径的末尾扩展时,参数列表中的第一个路径最先被添加。
对于每个被添加且尚未在路径中的目录,addpath 会检查是否存在名为 PKG_ADD 的文件(注意没有 .m 扩展名),如果存在则运行它。
pathstr = genpath (dir) ¶pathstr = genpath (dir, skipdir1, …) ¶返回由 dir 及其所有子目录构成的路径。
该路径不包含包目录(以 + 开头)、旧式类目录(以 @ 开头)、private 目录,以及这些类型的任何子目录。
如果给出了额外的字符串参数,则生成的路径将排除具有这些名称的目录。
(dir1, …) ¶oldpath = rmpath (dir1, …) ¶从当前函数搜索路径中移除 dir1、…。
除了接受单个目录参数外,也接受由 pathsep 分隔的目录名列表。例如:
rmpath ("dir1:/dir2:~/dir3")
对于每个被移除的目录,rmpath 会检查是否存在名为 PKG_DEL 的文件(注意没有 .m 扩展名),如果存在则运行它。
file ¶status = savepath (…) ¶将当前函数搜索路径中用户自定义的部分保存到 file 中。
保存在 file 中的文件夹列表不包括为 Octave 自身函数添加的文件夹、属于 Octave 包(参见 pkg load)的文件夹以及通过命令行开关添加的文件夹。
如果省略 file,Octave 会在当前目录中查找项目特定的 .octaverc 文件来保存路径信息。如果不存在此类文件,则使用用户的配置文件 ~/.octaverc。
如果成功,savepath 返回 0。
savepath 函数使得自定义用户的配置文件以恢复特定 Octave 实例所需的工作路径变得简单。假设未指定文件名,Octave 将在启动时自动从相应的 .octaverc 文件恢复已保存的目录路径。如果指定了文件名,则可以通过调用 source file 手动恢复路径。
() ¶str = path () ¶str = path (path1, …) ¶修改或显示 Octave 的加载路径。
如果 nargin 和 nargout 均为零,则以易于阅读的格式显示 Octave 加载路径中的元素。
如果 nargin 为零且 nargout 大于零,则返回当前加载路径。
如果 nargin 大于零,则连接各参数,用 pathsep 分隔它们。将内部搜索路径设置为结果,并返回该结果。
不检查重复元素。
val = pathdef () ¶返回 Octave 的默认路径。
路径信息从以下四个来源之一提取。可能的来源按优先级顺序排列为:
() ¶重新初始化 Octave 的加载路径目录缓存。
fname = file_in_loadpath (file) ¶fname = file_in_loadpath (file, "all") ¶如果在 path 指定的目录列表中能找到 file,则返回其绝对路径名。
如果未找到文件,则返回空字符串。
当 file 已经是绝对路径名时,会在文件系统中检查该名称,而不是在 Octave 的加载路径中查找。在这种情况下,如果 file 存在,则将其返回给 fname,否则返回空字符串。
如果第一个参数是字符串元胞数组,则搜索加载路径中的每个目录,查找元胞数组中的每个元素,并返回第一个匹配项。
如果提供了可选的第二个参数 "all",则返回一个元胞数组,包含路径中所有同名文件组成的列表。如果未找到文件,则返回空的元胞数组。
另请参阅: file_in_path、dir_in_loadpath、path。
pathstr = restoredefaultpath () ¶将 Octave 的路径恢复到启动时的初始状态。
重新初始化后的路径作为输出返回。
pathstr = command_line_path () ¶返回 Octave 解释器启动时在命令行中给出的路径参数(--path arg)。
dirname = dir_in_loadpath (dir) ¶dirname = dir_in_loadpath (dir, "all") ¶如果在 path 指定的目录列表中能找到与 dir 匹配的加载路径元素,则返回其绝对路径名。
如果未找到匹配项,则返回空字符串。
匹配是在每个路径元素的末尾进行的。例如,如果 dir 是 "foo/bar",它能匹配路径元素 "/some/dir/foo/bar",但不能匹配 "/some/dir/foo/bar/baz" 或 "/some/dir/allfoo/bar"。当 dir 是绝对路径名而非仅仅是路径片段时,会在文件系统中进行匹配,而不是在 Octave 的加载路径中查找。在这种情况下,如果 dir 存在,则将其返回给 dirname,否则返回空字符串。
如果提供了可选的第二个参数,则返回包含所有名称匹配项的元胞数组,而不仅仅是第一个。
另请参阅: file_in_path、file_in_loadpath、path。
current_encoding = mfile_encoding () ¶(new_encoding) ¶old_encoding = mfile_encoding (new_encoding) ¶查询或设置用于读取 m 文件的编码。
输入和输出是指定编码名称的字符串,例如 "utf-8"。
Octave 的解析器在读取 m 文件时使用此编码,除非已通过 dir_encoding 函数或该目录中的 .oct-config 文件为包含 m 文件的特定目录设置了不同的编码。
特殊值 "system" 选择与系统区域设置匹配的编码。
如果在 m 文件已被解析后更改了 m 文件编码,则必须重新解析这些文件才能使更改生效。这可以通过 clear all 命令来触发。
此外,此编码还用于在 Octave 的 GUI 中使用内置编辑器加载和保存文件。
另请参阅: dir_encoding。
current_encoding = dir_encoding (dir) ¶(dir, new_encoding) ¶(dir, "delete") ¶old_encoding = dir_encoding (dir, new_encoding) ¶查询或设置用于读取 dir 中 m 文件的 encoding 编码。
每个目录的编码会覆盖(全局设置的)m 文件编码,请参见 mfile_encoding。
字符串 DIR 必须与目录在加载路径中显示的方式一致。
new_encoding 输入必须是有效的编码标识符或 "delete"。在后一种情况下,任何每个目录的编码都将被删除,并且(全局设置的)m 文件编码将用于给定的 dir。
只有在请求输出参数时,才会返回当前或先前使用的编码。
当新路径添加到加载路径时(例如通过 addpath),目录编码会自动从 .oct-config 文件中读取。要为同一文件夹中的所有文件设置编码,该文件必须包含以 "encoding=" 开头的一行,后跟编码标识符。
例如,要将同一文件夹中所有文件的文件编码设置为 ISO 8859-1(Latin-1),请创建一个包含以下内容的 .oct-config 文件:
encoding=iso8859-1
如果文件编码在文件已被解析之后更改,则必须重新解析文件才能使更改生效。这可以通过 clear all 命令来完成。
另请参阅: addpath、path、mfile_encoding。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2