【IDL】路径相关函数和方法汇总
发表于 2013-04-23
系统变量
系统变量 |
描述 |
!DIR |
IDL安装主目录 |
!PATH |
IDL搜索库文件及路径,包含IDL自带库文件路径和用户工作空间路径。 |
!DLM_PATH |
IDL搜索DLM路径 |
!HELP_PATH |
IDL帮助文件路径 |
IDL> print, !dir
C:\Program Files\Exelis\IDL82
IDL> help, !path
STRING = 'C:\Program Files\Exelis\IDL82\lib\bridges;C:\Program Files\Exelis\IDL82\lib\datatypes;C:\Program Files\Exelis\IDL82\lib\dicomex;C:\Program Fil'...
IDL> print, !dlm_path
C:\Program Files\Exelis\IDL82\bin\bin.x86_64
IDL> print, !help_path
C:\Program Files\Exelis\IDL82\help;C:\Program Files\Exelis\IDL82\help\online_help\IDL
ENVI 5路径获取新方法
获取ENVI 5安装路径
IDL> e = envi(/headless)
ENVI> print, e.root_dir
C:\Program Files\Exelis\envi50\
获取一个位于ENVI临时目录的临时文件名,返回值在文件系统中是唯一的。常用在系统需要生成临时文件时。
ENVI> print, e.GETTEMPORARYFILENAME()
C:\Users\Administrator\AppData\Local\Temp\envitempfileWedNov211522332012139_1.dat
另外可以通过GetPreference方法获取如下路径:
Name Value |
Preference |
auxiliary_file_directory |
辅助路径,如果打开文件位置为只读属性(如CD等),则会将金字塔、头文件等文件存在辅助路径。如果设置Copy Pyramids Locally为true,则金字塔文件自动存在辅助路径。 |
extensions_directory |
扩展工具箱的sav文件路径 |
output_directory |
默认输出路径 |
temporary_directory |
临时目录 |
working_directory |
默认打开目录 |
ENVI> print, e.GETPREFERENCE('auxiliary_file_directory')
C:\Users\Administrator\AppData\Local\Temp\
ENVI> print, e.GETPREFERENCE('extensions_directory')
C:\Users\Administrator\.idl\envi\extensions5_0
ENVI> print, e.GETPREFERENCE('output_directory')
D:\Temp\
ENVI> print, e.GETPREFERENCE('temporary_directory')
C:\Users\Administrator\AppData\Local\Temp\
ENVI> print, e.GETPREFERENCE('working_directory')
D:\ENVI&IDL资料库\05产品培训工具包\2012ENVI培训素材包\练习数据\
ENVI Classic路径相关函数
获取ENVI安装路径
ENVI> print, envi_get_path()
C:\Program Files\Exelis\ENVI50\classic
获取临时文件名
ENVI> print, envi_get_tmp()
C:\Users\ADMINI~1\AppData\Local\Temp\envFriDec071130022012602_1.tmp
IDL中的路径相关函数
获取临时路径
IDL> print, GETENV('IDL_TMPDIR')
C:\Users\Administrator\AppData\Local\Temp\
IDL> cd, 'D:\temp'
IDL> cd, current = curPath
IDL> print, curPath
D:\temp
;默认搜索路径为!dir路径下
IDL> print, FILEPATH('people.dat', SUBDIRECTORY=['examples','data'])
C:\Program Files\Exelis\IDL82\examples\data\people.dat
;也可手动指定ROOT_DIR,即根目录
IDL> print, filepath('ruleset.xml', root_dir = 'D:\', subdirectory = ['temp'])
D:\temp\ruleset.xml
;获取系统路径下某文件夹路径
IDL> print, filepath('data')
C:\Program Files\Exelis\IDL82\data
IDL> print, filepath('bin')
C:\Program Files\Exelis\IDL82\bin
;关键字TMP,返回临时目录下自定文件名的完整路径
IDL> print, filepath('a.dat', /tmp)
C:\Users\Administrator\AppData\Local\Temp\a.dat
创建新路径
;如果不指定路径,则默认在当前路径下创建新文件夹
IDL> file_mkdir, 'test_mkdir'
;创建指定路径目录
IDL> file_mkdir, 'D:\temp\temp\temp'
判断文件/路径是否存在、文件是否为可执行文件、是否可读、可写等。 — File_Test
IDL> print, file_test('D:\temp\aaaa.dat')
0
IDL> print, file_test('D:\temp\temp', /directory)
1
IDL> print, file_test('D:\temp\temp1', /directory)
0
IDL> print, file_test('D:\temp\ruleset.xml', /write)
1
IDL> print, file_test('D:\temp\ruleset.xml', /executable)
0
IDL> .compile -v 'D:\IDLWorkspace82\Default\helloworld.pro'
% Compiled module: HELLOWORLD.
IDL> print, routine_filepath('helloworld')
D:\IDLWorkspace82\Default\helloworld.pro
;常用此方法获取当前程序路径
IDL> print, file_dirname(routine_filepath('helloworld'))
D:\IDLWorkspace82\Default
IDL 8.2.2可以使用如下方法,即不需要输入过程名
IDL> print, file_dirname(routine_filepath())
D:\IDLWorkspace82\Default
获取完整文件名,以当前路径为基础
IDL> print, file_expand_path('test_file.dat')
D:\temp\test_file.dat
获取输入完整路径文件名的路径和文件名
IDL> file = 'D:\temp\test_file.dat'
IDL> print, file_dirname(file)
D:\temp
IDL> print, file_basename(file)
test_file.dat
获取系统路径!Path或指定路径下的文件完整路径 – File_Which
IDL> print, FILE_WHICH('file_which.pro')
C:\Program Files\Exelis\IDL82\lib\file_which.pro
IDL> print, FILE_WHICH('D:\temp', 'ruleset.xml')
D:\temp\ruleset.xml
;在!Path下没有搜索到ruleset.xml文件
IDL> print, FILE_WHICH('ruleset.xml')
;include_current_dir关键字表示将当前路径加入到搜索路径下
IDL> print, FILE_WHICH('ruleset.xml', /include_current_dir)
D:\temp\ruleset.xml
IDL> print, path_sep()
\
Dialog_Pickfile函数
格式如下:
Syntax
Result = DIALOG_PICKFILE( [,
具体用法及关键字含义可查看IDL帮助,这里仅介绍几种常用关键字。
关键字 |
含义 |
默认返回文件名后缀 |
|
打开返回路径的对话框 |
|
后缀名筛选 |
|
获取对话框上一次选择的路径 |
|
是否支持多选文件(按住Ctrl或Shift时) |
|
默认打开路径 |
|
对话框标题 |
C#获取IDL安装路径
C#与IDL混合编程越来越受欢迎,在混编过程中,经常用到初始化IDL环境或获取idlrt.exe路径的情况。可以参考下面代码通过读取注册表自动获取IDL安装路径。
//添加两个程序集引用
using System.IO;
using Microsoft.Win32;
namespace Get_IDL_Path
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
RegistryKey rsg = null;
rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\ITT\\IDL\\8.0", true);
string IDLPath = "";
if (rsg.GetValue("Installdir") != null) //读取失败则返回空
{
//初始化IDL8.0路径,后边根据自己情况修改,如果32位系统为"IDL80\bin\bin.x86\idlrt.exe"
IDLPath = Path.Combine(rsg.GetValue("Installdir").ToString(), @"IDL80\bin\bin.x86_64\idlrt.exe");
}
else
{
MessageBox.Show("Fail");
return;
}
MessageBox.Show(IDLPath);
}
private void button2_Click(object sender, EventArgs e)
{
RegistryKey rsg = null;
rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Exelis\\ENVI\\5.0", true);
string IDLPath = "";
if (rsg.GetValue("IDLInstalldir") != null) //读取失败则返回null
{
//初始化IDL8.2路径,后边根据自己情况修改
IDLPath = Path.Combine(rsg.GetValue("IDLInstalldir").ToString(), @"bin\bin.x86_64\idlrt.exe");
}
else
{
MessageBox.Show("Fail");
return;
}
MessageBox.Show(IDLPath);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理