使用python调用SAS脚本-子流程
我正在尝试使用python和子流程调用sas脚本。这是我的代码:使用python调用SAS脚本-子流程,python,sas,subprocess,popen,Python,Sas,Subprocess,Popen,我正在尝试使用python和子流程调用sas脚本。这是我的代码: proc=Popen(self.cmd,shell=True,stdout=PIPE,stderr=stdout) 进程等待() 标准输出,标准错误=proc.communicate() 如果proc.returncode==0: log.info(“成功执行\u shell\u命令”) elif proc.returncode==1: self.status_message=“从“+”返回代码1。join(self.cmd)+”
proc=Popen(self.cmd,shell=True,stdout=PIPE,stderr=stdout)
进程等待()
标准输出,标准错误=proc.communicate()
如果proc.returncode==0:
log.info(“成功执行\u shell\u命令”)
elif proc.returncode==1:
self.status_message=“从“+”返回代码1。join(self.cmd)+”error msg:“+str(标准_错误)
self.flag=1
提升值错误(自我状态信息)
elif proc.returncode>1:
self.status\u message=“在shell上执行命令时出错:“+”.join(self.cmd)+''+标准\u错误
self.flag=1
提升值错误(自我状态信息)
self.cmd=[sas_path,'-config',sas_config_path,'-sysin',sas_code_path]
我没有包括SAS的autoexec_路径,因为我没有找到任何autoexec文件。
如果我有autoexec文件
self.cmd=[sas_path,'-config',sas_config_path,'-autoexec',autoexec_path,'-sysin',sas_code_path]
问题是SAS代码执行成功,但proc.returncode
不等于0。因此,我的python代码不知道代码是否成功运行。我做错了什么吗?日志中可能有警告 从文件来看 返回代码和完成状态 完成SAS作业的返回代码在Windows批处理变量ERRORLEVEL中返回 ERRORLEVEL变量的值
你能设置-log选项并检查有什么问题吗?我的sas代码发出警告,这就是返回代码为1的原因。谢谢Richard。我的SAS代码日志有警告,这就是为什么我得到返回代码1。这很有帮助。很高兴听到这个消息,欢迎来到SO。确保对你的问题和你认为有帮助的其他问题的答案进行标记。