Синтаксис SPSS-использовать путь к файлу



У меня есть куча данных SPSS и синтаксических файлов, которые я перемещаю, ежедневно меняя папки. Однако относительные пути остаются теми же.
Есть ли способ воспользоваться этим фактом?
например: используйте команду INCLUDE и ссылайтесь на синтаксический файл, который всегда находится на один уровень выше; или используйте GET, чтобы открыть файл, расположенный на два уровня выше



Погуглившись, я нашел некоторую ссылку на команду хоста, но я не совсем сделал это, чтобы работать.



Любые входные данные будут оценены :)



Заранее большое спасибо

679   2  

2 ответов:

Вы можете получить относительный путь синтаксиса SPSS (при условии, что он сохранен) с помощью python.

SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()

Из этого вы можете перейти в любую папку, которую вы хотите, используя модуль pythons os (или иначе). Ниже приведен пример извлечения сохраненного расположения файла синтаксиса, а затем и следующих двух уровней вверх. Он также возвращает макрос, содержащий соответствующие пути к папкам, сохраненные в виде строк, чтобы впоследствии их можно было использовать в командах SPSS (таких как GET, INCLUDE и другие).

* Run this in any saved SPSS syntax to test *.
begin program.
import spss,spssaux,SpssClient, os
SpssClient.StartClient() 
synPathL0U = os.path.dirname(SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()) 
SpssClient.StopClient()
synPathL1U=os.path.dirname(synPathL0U)
synPathL2U=os.path.dirname(synPathL1U)
print "synPathL0U =",synPathL0U
print "synPathL1U =",synPathL1U
print "synPathL2U =",synPathL2U
spss.SetMacroValue("!synPathL0U",spssaux._smartquote(synPathL0U+"\\"))
spss.SetMacroValue("!synPathL1U",spssaux._smartquote(synPathL1U+"\\"))
spss.SetMacroValue("!synPathL2U",spssaux._smartquote(synPathL2U+"\\"))
end program.

/* Check results - Echo should relay back the desired folder paths */.
echo !synPathL0U.
echo !synPathL1U.
echo !synPathL2U.

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

Сделать это легко, как скопировать код выше между BEGIN PROGRAM / END PROGRAM в функцию Run(args) в файл python, который называется, скажем, SET_JOB_CWD.py. Имя, присвоенное файлу здесь, имеет значение и будет использоваться позже для вызова этой команды расширения.

Так что SET_JOB_CWD.py будет содержать:

def Run(args):
   import spss,spssaux,SpssClient, os
   SpssClient.StartClient() 
   synPathL0U = os.path.dirname(SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()) 
   SpssClient.StopClient()
   synPathL1U=os.path.dirname(synPathL0U)
   synPathL2U=os.path.dirname(synPathL1U)
   spss.SetMacroValue("!synPathL0U",spssaux._smartquote(synPathL0U+"\\"))
   spss.SetMacroValue("!synPathL1U",spssaux._smartquote(synPathL1U+"\\"))
   spss.SetMacroValue("!synPathL2U",spssaux._smartquote(synPathL2U+"\\"))

Тогда также создание соответствующего файла SET_JOB_CWD.xml, содержащего следующий код:

<Command xmlns="http://xml.spss.com/extension" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="SET JOB CWD" Language="Python">
</Command>

Эти два файла должны быть сохранены в любом месте, куда направляются файлы расширений (чтобы узнать расположение этой папки, запустите SHOW EXTPATHS. в синтаксисе SPSS, расположение, отображаемое для "EXTPATHS EXTENSIONS", - это эта папка.

Теперь, когда у вас есть сохраненный синтаксис в SPSS. Вы можете просто запустить SET JOB CWD., и он вернет макросы SPSS !synPathL0U,!synPathL1U,!synPathL2U содержит соответствующие папки, хранящиеся в виде строки.

В v21 (бесплатный) плагин Python является отдельной загрузкой. Он полностью интегрирован в v22.

С Python и R Essentials вы получаете набор команд расширения, которые работают как собственные команды, включая интерфейс диалогового окна. Один из них, который вы можете найти полезным, - это открытый проект статистики. Он позволяет определить проект или набор связанных проектов и автоматически загружать или выполнять вспомогательные файлы при запуске или при вызове команды.

В v21-22 Вам нужно установить это из сайт сообщества SPSS. Более подробная информация доступна, если это необходимо.

Я бы избегал команды INCLUDE, кстати. Используйте новую команду INSERT. Он может сделать некоторые трюки каталога для вас.

Comments

    Ничего не найдено.