Chcę wywołać program SAS z innego programu w systemie Windows. Mam pewne doświadczenie w uruchamianiu SAS z wiersza poleceń w trybie wsadowym, ale nie ma prawdziwego doświadczenia otrzymywania z niego wiadomości i obsługi tych wiadomości. Przeszukałem go i znalazłem sporo informacji na temat czytania ze stdin z programu SAS, ale nie mogę się domyślić, jak sprawić, by mój program SAS zapisywał się na stdout lub stderr. Czy mogę to zrobić w systemie Windows?Przechwytywanie stdout i stderr z SAS w systemie Windows?
Z programu SAS, chciałbym wykonać następujące czynności:
- Przekierowanie Wiadomości i komunikaty o błędach Ostrzeżenie na stderr zamiast drukować je w pliku dziennika
- W ramach programu SAS, ręcznie wykryć błędy i/lub inne problemy i wyprowadzać je na stderr lub stdout.
Oto co próbowałem:
SAS
data test;
attrib i length=8;
do i = 1 to 10;
put 'putting'; *how can i make this go to stdout?;
putlog 'putting to log'; *this can go to the log - that is okay;
if i = 5 then do;
*pretend this is an error I am manually detecting - how can i make this go to stderr?;
put 'we found 5';
end;
output;
end;
run;
data _null_;
1 = y; *this is an error detected by SAS. How can I make this go to stderr?;
run;
Pythona, który wywołuje SAS:
import subprocess
import os
if __name__ == '__main__':
filename = os.path.normpath(r'C:\Users\oob\Desktop\sas_python_test.sas')
sas_executable = os.path.normpath(r'C:\Program Files\SAS\SASFoundation\9.2\sas.exe')
cmd = r'"' + sas_executable + r'"' + " " + r'"' + filename + r'"'
p = subprocess.Popen(cmd,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
print p.communicate()
Moje wyniki na konsoli od tego są:
('', '')
Nigdy nie używałem SAS, ale czy jest to aplikacja konsolowa? Może nie mieć uchwytów dla stdout/stderr. W takim przypadku wypróbuj moduł 'win32com' PyWin32, aby zautomatyzować SAS używając OLE (http://support.sas.com/documentation/cdl/en/hostwin/63285/HTML/default/viewer.htm#oleauto.htm). – eryksun
Oto link do dokumentacji SAS dotyczącej używania nienazwanych rur, które mogą być pomocne: http://support.sas.com/documentation/cdl/en/hostwin/63285/HTML/default/viewer.htm#unnamed.htm – RWill