Voglio chiamare un programma SAS da un altro programma su Windows. Ho un po 'di esperienza nell'invocare SAS dalla riga di comando in modalità batch, ma nessuna esperienza reale nella ricezione di messaggi da esso e nella gestione di tali messaggi. Ho cercato su Google e ho trovato un bel po 'di informazioni sulla lettura da stdin da un programma SAS, ma non riesco a capire come rendere il mio programma SAS scrivere su stdout o stderr. Posso farlo anche su Windows?Cattura stdout e stderr da SAS in Windows?
Dal programma SAS, vorrei fare quanto segue:
- reindirizzamento messaggi di avviso e messaggi di errore a stderr invece di stampare il file di registro
- Nell'ambito del programma SAS, manualmente rilevare gli errori e/o altri problemi e inviarli a stderr o stdout.
Ecco che cosa ho provato:
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;
Python che chiama la 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()
I miei risultati sulla console da questo sono:
('', '')
Non ho mai usato SAS, ma è un'app per console? Potrebbe non avere maniglie per stdout/stderr. In tal caso, prova il modulo 'win32com' di PyWin32 su [automatizza SAS usando OLE] (http://support.sas.com/documentation/cdl/en/hostwin/63285/HTML/default/viewer.htm#oleauto.htm). – eryksun
Ecco un collegamento alla documentazione SAS sull'utilizzo di pipe senza nome che potrebbero essere utili: http://support.sas.com/documentation/cdl/en/hostwin/63285/HTML/default/viewer.htm#unnamed.htm – RWill