从Python调用Git二进制文件和错误代码

从Python调用Git二进制文件和错误代码,python,git,bash,Python,Git,Bash,我正在尝试用python构建一组git实用程序。我正在使用subprocess.Popen运行git二进制文件。现在我只是想找到最好的方法来确定运行git命令时是否出错 我的问题是,git在成功的git命令上是否总是返回returncode为0,在不成功的调用上是否总是返回returncode为非零?我只是想确保检查returncode是检测错误的一种安全方法,以便在git命令失败时退出脚本。是的,git(以及任何行为良好的*nix程序)将始终返回0表示成功,非零表示失败。这是GNU/Linux

我正在尝试用python构建一组git实用程序。我正在使用subprocess.Popen运行git二进制文件。现在我只是想找到最好的方法来确定运行git命令时是否出错


我的问题是,git在成功的git命令上是否总是返回returncode为0,在不成功的调用上是否总是返回returncode为非零?我只是想确保检查returncode是检测错误的一种安全方法,以便在git命令失败时退出脚本。

是的,git(以及任何行为良好的*nix程序)将始终返回0表示成功,非零表示失败。这是GNU/Linux系统上的范例,由于Git是由制造Linux的同一个人制造的,你可以打赌它遵循了惯例。

你看过Python的Git模块吗?有什么不使用它们的理由吗?我听说它们不够好。我对命令行中的git二进制非常熟悉,因此我认为这是最好的选择。理想情况下,与二进制接口应该很容易,但这取决于您如何定义错误,一些用户可能期望看到的错误可能会返回非零。您在处理程序中的错误时可能会遇到问题,因为您必须处理的最佳值(返回值)不如异常有帮助。只要git在不成功的调用中只返回非零,我将只显示调用的输出(因为这将以用户能够理解的方式详细说明发生的错误)我不能对返回值做任何硬性的陈述,我没有看到它被记录在案。但是你如何从各种git命令中定义成功呢?它不像
cat
grep
那么简单,虽然我同意它应该返回人们期望的正确值,但我在任何地方都看不到它被记录在案。我想不出任何东西这并不十分明显。如果您对某个特定命令有特定的问题,它是什么?如果您不相信它返回了“正确的值,”你自己试试——这里没有人需要说服你。我想说的是,你不能声称它总是返回一个期望值。例如,如果你没有git下的目录权限,那么返回128。128是一个错误代码。如果你没有目录权限,怎么会不期望呢?Zer正如我的回答所说,o代表成功,其他任何东西都是错误。我坚持我古怪的主张!啊!那么两年前,当在存储库中运行
git status
时,会返回1吗?