我在检查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)
就我而言,我一直收到返回码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或在命令中定义它们。