当前位置: 首页 > 面试题库 >

“ subprocess.Popen”-检查成功和错误

松和泰
2023-03-14
问题内容

我想检查子流程是否成功完成执行或失败。目前,我已经提出了一个解决方案,但是我不确定它是否正确和可靠。是否保证每个进程仅将错误输出到stderr
stdout

注意:我对仅重定向/打印输出不感兴趣。我已经知道该怎么做。

pipe = subprocess.Popen(command,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE,
                                universal_newlines=True)

if "" == pipe.stdout.readline():
    print("Success")
    self.isCommandExectutionSuccessful = True

if not "" == pipe.stderr.readline():
    print("Error")
    self.isCommandExectutionSuccessful = True

或者:

   if "" == pipe.stdout.readline():
       print("Success")
       self.isCommandExectutionSuccessful = True
   else:
       print("Error")
       self.isCommandExectutionSuccessful = False

和:

   if not "" == pipe.stderr.readline():
       print("Success")
       self.isCommandExectutionSuccessful = True
   else:
       print("Error")
       self.isCommandExectutionSuccessful = False

问题答案:

您需要对流程的输出做任何事情吗?

check_call方法在这里可能有用。在这里查看python文档:https
:
//docs.python.org/2/library/subprocess.html#subprocess.check_call

然后,您可以按以下方式使用它:

try:
  subprocess.check_call(command)
except subprocess.CalledProcessError:
  # There was an error - command exited with non-zero code

但是,这依赖于command返回成功的退出代码0和成功的非零值。

如果还需要捕获输出,则该check_output方法可能更合适。如果您也需要重定向标准错误,则仍然可以。

try:
  proc = subprocess.check_output(command, stderr=subprocess.STDOUT)
  # do something with output
except subprocess.CalledProcessError:
  # There was an error - command exited with non-zero code

请参阅以下文档:https
:
//docs.python.org/2/library/subprocess.html#subprocess.check_output



 类似资料:
  • 问题内容: 我一直在使用它来加载另一个页面,仅使用他们的示例: 但是我想在加载成功时运行一个函数,如果加载失败,则运行另一个函数,不幸的是,回调函数上的描述是: 当ajax请求完成(不一定成功)时调用的函数。 如何确保加载成功? 谢谢。 问题答案: 您可以尝试使用更详细的$ .ajax()方法调用。这将为您提供对AJAX调用的更细粒度的控制(但是,与简单的.load()相比,它还需要做更多的工作。

  • 我正在使用Ruby和aws sdk从S3下载一个文件夹。如何检查每个文件是否已成功下载?这只是检查本地计算机上是否存在文件吗?

  • 问题内容: 好吧,我是SQL的新手,我刚刚读到,存储过程始终返回一个值,确定该过程中的查询是否已成功执行是一种很好的做法。 所以我有一个带有select语句的简单存储过程,如果要执行,我想返回1,否则返回-1。 您能告诉我如何用SQL编写该条件吗? 如果有关系,我的数据库是MS SQL Server。 谢谢你。 问题答案: 使用输出参数返回成功状态以及Try..Catch块

  • 问题内容: 我正在使用AngularJS 1.1.3将新的$ resource与promises一起使用… 我如何从中获得回调?我尝试使用与$ http相同的方法: 但是没有“成功”也没有“错误”功能… 我也尝试过: 即使返回的是 404 ,也总是打印“成功,有数据” 。 任何想法? 谢谢 问题答案: 从角度 资源 和角度1.2 的 PR开始 ,角度将切换为执行成功/错误检查的更简单方法。无需附加

  • 我已经构建了一个使用AJAX提交表单数据的登录脚本。 PHP部分在没有AJAX的情况下运行良好。但是系统不能与AJAX实现一起工作。 它始终显示以下消息,即使 PHP 文件返回 true[正确的用户名 用户名/密码不正确 超文本标记语言Result Div JQuery fn_login.php 有人可以指出代码/实践中的错误吗? 刚刚尝试禁用AJAX,当用户名/密码正确时,PHP文件可以正确回显

  • 问题内容: 我有一个简单的路线定义: 是唯一的选择吗?感觉很乱。 问题答案: 根据node.js的源代码 不返回任何内容。 如果出现问题,它将抛出一个对象。因此,您应该在一个块中编写。