【IDL】路径相关函数和方法汇总

admin

发表于 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\

修改工作空间当前路径:CD,通过current关键字获取当前路径

IDL> cd, 'D:\temp'

IDL> cd, current = curPath

IDL> print, curPath

D:\temp

获取指定路径下文件名完整路径 – FilePath

;默认搜索路径为!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( [, DEFAULT_EXTENSION=string] [, /DIRECTORY] [, DIALOG_PARENT=widget_id] [, DISPLAY_NAME=string] [, FILE=string] [, FILTER=string/string array] [, /FIX_FILTER] [, GET_PATH=variable] [, GROUP=widget_id] [, /MULTIPLE_FILES] [, /MUST_EXIST] [, /OVERWRITE_PROMPT] [, PATH=string] [, /READ | , /WRITE] [, RESOURCE_NAME=string] [, TITLE=string] )

具体用法及关键字含义可查看IDL帮助,这里仅介绍几种常用关键字。

关键字

含义

DEFAULT_EXTENSION

默认返回文件名后缀

DIRECTORY

打开返回路径的对话框

FILTER

后缀名筛选

GET_PATH

获取对话框上一次选择的路径

MULTIPLE_FILES

是否支持多选文件(按住Ctrl或Shift时)

PATH

默认打开路径

TITLE

对话框标题

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);

}

}

}

Copyright © 2088 南美洲世界杯预选赛程_世界杯2 - ycfcjt.com All Rights Reserved.
友情链接