IDL/Miscellaneous

PATH_SEP 함수 소개

이상우_IDL 2016. 1. 11. 19:52
728x90
반응형

오늘은 PATH_SEP이라는 내장함수를 간단하게 소개해보려고 합니다. 우리가 어떤 파일의 디렉토리 경로를 표시할 때 사용하는 분리자는 OS에 따라서 슬래쉬(/) 아니면 역슬래쉬(\)가 사용됩니다. 그런데 이런 분리자를 표기할 때 그냥 / 또는 \와 같이 직접 표기하는 방법도 있겠지만, OS와 무관하게 호환 가능한 프로그램을 만들고자 할 경우에는 문제가 될 가능성이 있습니다. 예를 들어 MS 윈도우즈용 IDL에서 현재의 작업 디렉토리내에 my_idl이라는 하위 디렉토리가 있고 그 안에 2016이란 하위 디렉토리가 있고 그 안에 test.txt라는 파일이 있다고 합시다. 그러면 IDL 프로그램내에서 이 파일의 이름을 경로와 함께 다음과 같이 표기할 수 있습니다.


file = 'my_idl\2016\test.txt'


그런데 이러한 내용을 담은 프로그램을 Linux나 Mac OS 등과 같은 다른 OS용 IDL에서 사용할 경우에는 파일의 경로를 저런 방식으로는 제대로 해석할 수가 없습니다. 이러한 OS들에서는 다음과 같이 적어주는 것이 맞습니다.


file = 'my_idl/2016/test.txt'


그렇다면 OS의 특성을 타지 않고도 이 프로그램이 제대로 돌아가도록 하려면 어떻게 하는 것이 좋을까요? 이를 위해서는 디렉토리별 분리자를 표기하는데 있어서 PATH_SEP이라는 내장함수를 사용하면 됩니다. 즉 다음과 같이 적어주는 것입니다.


sep = PATH_SEP()

file = 'my_idl'+sep+'2016'+sep+'test.txt'


여기서 PATH_SEP 함수로 돌려받은 sep이라는 변수에는 해당 OS에서 사용되는 경로 분리자에 해당되는 문자가 들어가게 됩니다.따라서 프로그램이 돌아갈 때 그 컴퓨터의 OS에 따른 값을 직접 받아서 사용하기 때문에, 프로그램 자체는 어떤 OS에서든 지장없이돌아가게 됩니다. 실제로 Mac OS용 IDL에서 이 값을 출력해보면 다음과 같습니다.


IDL> PRINT, PATH_SEP()

/


물론 MS 윈도우즈에서 똑같이 해보면 결과는 다음과 같습니다.


IDL> PRINTPATH_SEP()

\



특히 FILE_SEARCH나 DIALOG_PICKFILE 등의 내장함수를 사용하여 파일의 디렉토리 경로 정보를 문자형 값으로 가져오고 이값을 해독하여 후속 작업을 진행하는 과정이 프로그램에 들어갈 경우, 이 PATH_SEP 함수는 꽤 유용하게 사용될 수 있습니다. 특히나 이 프로그램이 OS에 상관없이 구동되도록 해야 할 경우라면 더욱 더 큰 힘을 발휘할 수 있다는 점을 참조해두시기 바랍니다.

반응형