Синтаксис SPSS-использовать путь к файлу
У меня есть куча данных SPSS и синтаксических файлов, которые я перемещаю, ежедневно меняя папки. Однако относительные пути остаются теми же.
Есть ли способ воспользоваться этим фактом?
например: используйте команду INCLUDE и ссылайтесь на синтаксический файл, который всегда находится на один уровень выше; или используйте GET, чтобы открыть файл, расположенный на два уровня выше
Погуглившись, я нашел некоторую ссылку на команду хоста, но я не совсем сделал это, чтобы работать.
Любые входные данные будут оценены :)
Заранее большое спасибо
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