Вызов сценария SAS с использованием Python - подпроцесс - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь вызвать скрипт sas, используя python и подпроцесс. Это мой код:

    proc = Popen(self.cmd, shell=True, stdout=PIPE, stderr=STDOUT)
    proc.wait()
    standard_output, standard_error = proc.communicate()
    if proc.returncode == 0:
        log.info("Successfully executed execute_shell_command")
    elif proc.returncode == 1:
        self.status_message = "return code 1 from" + " ".join(self.cmd) + "error msg: " + str(standard_error)
        self.flag = 1
        raise ValueError(self.status_message)
    elif proc.returncode > 1:
        self.status_message = "Error occurred while executing command on shell :" + " ".join(self.cmd) + ' ' + standard_error
        self.flag = 1
        raise ValueError(self.status_message)

    self.cmd  = [sas_path,'-config',sas_config_path,'-sysin',sas_code_path]

Я не включаю autoexec_path для SAS, потому что я не нашел ни одного файла autoexec. если у меня есть файл autoexec, то

self.cmd = [sas_path,'-config',sas_config_path,'-autoexec',autoexec_path,'-sysin',sas_code_path]

Проблема в том, что код SAS выполняется успешно, но proc.returncode не равен 0. Поэтому мой код на python не знает, что код был успешно выполнен.
Есть что-то, что я делаю не так?

1 Ответ

1 голос
/ 24 октября 2019

В журнале могут отображаться предупреждения.

Из документов "SAS® 9.4 Companion для Windows, пятое издание"

Коды возврата и статус завершения

Код возврата для завершения задания SAS возвращается в переменной пакета Windows, ERRORLEVEL.

Значения для переменной ERRORLEVEL

enter image description here

...