Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Input and Construct File Names in Mathematica - Wolfram Mathematica

Ввод и создание полных имен файлов в Mathematica

Mathematica предоставляет простой и логичный метод для доступа и использования файлов. В дополнение к указанию полного пути к файлу, что имеет свои особенности для каждой операционной системы, Mathematica предлагает метод программного указания пути к файлу или каталогу, который един для всех операционных систем.

Mathematica позволяет Вам вводить путь к файлу или каталогу путем непосредственного ввода с клавиатуры, путем использования команды меню InputAndConstructFileNamesInMathematicaRU_1.gif ? InputAndConstructFileNamesInMathematicaRU_2.gif, или при помощи перетаскивания с применением функциональных клавиш. Для получения большей информации об этих методах, смотри Руководство How to: Insert a File Path.

Вы также можете указать полный путь к файлу программно, используя функцию FileNameJoin, или же разделить полный путь к файлу на отдельные составляющие при помощи функции FileNameSplit.

Любой написанный Вами программный код, который использует эти функции, един для всех операционных систем, так как он будет использовать разделители и другие условные обозначения, используемые имеющейся операционной системой.

Если бы Вы использовали функции StringSplit или StringJoin для работы с именами файлов, Вам пришлось бы вручную заменять разделители имен файлов и другие условные обозначения для каждой операционной системы, где бы Вы хотели выполнять программный код.

Воспользуемся функцией FileNameJoin для создания пути к гипотетическому файлу в  Windows:

In[5]:=

InputAndConstructFileNamesInMathematicaRU_3.gif

Out[5]=

InputAndConstructFileNamesInMathematicaRU_4.gif

Сделаем то же самое в случае с Macintosh:

In[10]:=

InputAndConstructFileNamesInMathematicaRU_5.gif

Out[10]=

InputAndConstructFileNamesInMathematicaRU_6.gif

Функция FileNameJoin также работает с путями, которые уже содержат разделители:

In[18]:=

InputAndConstructFileNamesInMathematicaRU_7.gif

In[19]:=

InputAndConstructFileNamesInMathematicaRU_8.gif

Out[19]=

InputAndConstructFileNamesInMathematicaRU_9.gif

Вам не обязательно указывать имя файла для функции FileNameJoin, так как она также работает с каталогами, несмотря на свое название:

In[20]:=

InputAndConstructFileNamesInMathematicaRU_10.gif

Out[20]=

InputAndConstructFileNamesInMathematicaRU_11.gif

Функция FileNameJoin очень полезна для создания имен файлов и путей к файлам, основанных на  системных переменных Mathematica, которые представляют опреде ленные каталоги.

Используем FileNameJoin вместе с системной переменной $UserBaseDirectory для создания пути к файлу kernel init.m:

In[38]:=

InputAndConstructFileNamesInMathematicaRU_12.gif

Out[38]=

InputAndConstructFileNamesInMathematicaRU_13.gif

Применим FileNameJoin вместе с системной переменной $HomeDirectory для задания пути к каталогу Graphics, который в одном из предыдущих примеров создавался при помощи определенной вручную функции mypath:

In[17]:=

InputAndConstructFileNamesInMathematicaRU_14.gif

Out[17]=

InputAndConstructFileNamesInMathematicaRU_15.gif

Другими системными переменными Mathematica, которые часто используются для представления каталогов, являются $BaseDirectory, $RootDirectory, $HomeDirectory, and $InstallationDirectory.

Функция FileNameSplit является, по сути, полной противоположностью FileNameJoin.

Применим FileNameSplit для разделения пути к файлу на его отдельные составляющие:

In[53]:=

InputAndConstructFileNamesInMathematicaRU_16.gif

Out[53]=

InputAndConstructFileNamesInMathematicaRU_17.gif

Воспользуемся функцией FileNameSplit чтобы разделить системную переменную $UserBaseDirectory на составляющие. Первым элементом этого списка является пустая строка текста. Это отражает тот факт, что переменная $UserBaseDirectory начинается с разделителя:

In[55]:=

InputAndConstructFileNamesInMathematicaRU_18.gif

Out[55]=

InputAndConstructFileNamesInMathematicaRU_19.gif

In[1]:=

InputAndConstructFileNamesInMathematicaRU_20.gif

Out[1]=

InputAndConstructFileNamesInMathematicaRU_21.gif

Применим [[...]] (краткую форму записи функции Part), чтобы извлечь первые 4 каталога из списка, полученного в предыдущем шаге:

In[62]:=

InputAndConstructFileNamesInMathematicaRU_22.gif

Out[62]=

InputAndConstructFileNamesInMathematicaRU_23.gif

Теперь вновь используем FileNameJoin для "сборки" пути к каталогу из полученных компонентов, применив символ % (обозначающий самый последний выведенный результат):

In[63]:=

InputAndConstructFileNamesInMathematicaRU_24.gif

Out[63]=

InputAndConstructFileNamesInMathematicaRU_25.gif

Такой же путь Вы можете построить с помощью функции FileNameDrop, которая отбрасывает элементы пути (в данном синтаксисе - последний):

In[66]:=

InputAndConstructFileNamesInMathematicaRU_26.gif

Out[66]=

InputAndConstructFileNamesInMathematicaRU_27.gif

In[65]:=

InputAndConstructFileNamesInMathematicaRU_28.gif

Out[65]=

InputAndConstructFileNamesInMathematicaRU_29.gif

Воспользуемся функцией FileNameDrop для создания пути, избавившись от последних 3 каталогов из системной переменной $UserBaseDirectory:

In[67]:=

InputAndConstructFileNamesInMathematicaRU_30.gif

Out[67]=

InputAndConstructFileNamesInMathematicaRU_31.gif