将SAS'Return Code'又称为%SYSRC返回到父python脚本

问题描述 投票:1回答:1

我在检查python子进程中的错误时遇到麻烦。子进程是一个sas程序。有巫师可以分享魔法吗?我想避免在sas日志中搜索字符串,而是依靠返回码。

我在AIX服务器上安装了python 2.7。

我能够使用python的子流程模块以多种方式调用sas程序。我已经使用check_output模块,Popen模块甚至只是调用对象成功调用了一个程序。但是,对于我一生,我无法获得返回码!

Import subprocess
Subprocess.call([‘SAS’,’/path/program.sas’])

Import subprocess
P = subprocess.check_output(“sas /path/program.sas”, stderr=subprocess.STDOUT, shell=True)
Print(p)

或导入子流程P = subprocess.Popen(“ sas /path/program.sas”,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)proc.wait()Standard_output,standard_error = proc.communicate *(打印(proc.returncode)或

Import subprocess
Try:
  output = subprocess.check_output(‘sas /path/program.sas’, stderr=subprocess.STDOUT, shell=true)
Except subprocess.CalledProcessError as exc:
  Print(“Status : Fail”, exc.returncode)

Python 2.7 Subprocess

SAS Completion Status

python-2.7 sas aix
1个回答
0
投票

就我而言,我一直收到返回码0或‘。这是由于我的sas程序而发生的。瞧,我的程序不过是一个无效的libname引用。

Libname x ‘blah’;

这在我期望2时返回0。我在程序中添加了abortabend,中提琴python返回了2。

proc = subprocess.Popen(“sas /path/program.sas;” shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
proc.wait()
standard_output, standard_error = proc.communicate()

print(proc.returncode)

请注意,您可能需要设置autoexec和config var或在命令中定义它们。

© www.soinside.com 2019 - 2024. All rights reserved.