【发布时间】:2016-02-23 22:06:28
【问题描述】:
我目前正在使用 Python 程序在对文件进行一些编辑后自动提交到存储库。我正在使用subprocess.Popen 创建一个调用 git 二进制文件的子进程。我虽然可以在创建子进程时使用stdin=PIPE,并且能够在命令行提示时写入我的用户凭据,但由于某种原因,这没有发生。代码如下所示:
proc = Popen(["git","push","origin","master"], stdin=PIPE)
proc.communicate("username")
proc.communicate("password")
现在发生的事情是它正在调用二进制文件,但仍向我显示命令行提示符。我在这里查看了其他一些问题,但它们都使用与我基本相同的代码,所以我对这个问题有点困惑。我知道还有很多其他方法可以实现此结果,例如缓存我的凭据,但我很想知道这种方法是否可行,原因有很多。
【问题讨论】:
-
就像我说的,我知道还有其他方法可以做到这一点。我只是想知道这种方式是否适用于一些项目特定的原因。
-
不能使用通信两次,写入标准输入
-
由于某种原因使用 write 给我一个 I/O 错误。
-
虽然这不能回答您的问题,但我可以提一下处理 Python 中 GIT 的模块已经编写好了 here 您可能想改用它。
-
您需要用户名和密码还是只需要密码?当我推或拉时,我只需要输入我的密码。
标签: python git pipe subprocess popen