git 显示无法使用 python check_output
git show not working with python check_output
我正在编写一个 python 脚本,我必须在其中从脚本中读取 git show
命令的输出。我决定使用 python 的 subprocess.check_output
函数。
但它给我 No such file or directory
错误。
运行 来自 python:
>>> import subprocess
>>> subprocess.check_output(['pwd'])
'/Users/aapa/Projects/supertext\n'
>>> subprocess.check_output(['git show', 'c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 566, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
>>>
运行直接:
$ pwd
/Users/aapa/Projects/supertext
$ git show c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java
package com.stxt.supercenter.rest.api.bootstrap;
import com.google.common.collect.Maps;
import com.stxt.base.rolepermission.enums.Role;
import com.stxt.superbase.profile.agent.bean.Agent;
import com.stxt.supercenter.rest.api.profile.agnet.AgentDTO;
import java.util.Arrays;
import java.util.Map;
.
.
.
需要指出的一件事 git show
以 vi
样式输出,即不是直接打印完整文件,而是打印文件的一部分以覆盖整个屏幕 :
最后打印下一行或退出。
为什么我在使用 check_output
时出错?
试试这个:
subprocess.check_output(['git', 'show', 'c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java'])
否则,您的代码会尝试执行字面上包含 space(git show
")的命令,而不是第一个参数为 show
的命令 git
.
我正在编写一个 python 脚本,我必须在其中从脚本中读取 git show
命令的输出。我决定使用 python 的 subprocess.check_output
函数。
但它给我 No such file or directory
错误。
运行 来自 python:
>>> import subprocess
>>> subprocess.check_output(['pwd'])
'/Users/aapa/Projects/supertext\n'
>>> subprocess.check_output(['git show', 'c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 566, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
>>>
运行直接:
$ pwd
/Users/aapa/Projects/supertext
$ git show c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java
package com.stxt.supercenter.rest.api.bootstrap;
import com.google.common.collect.Maps;
import com.stxt.base.rolepermission.enums.Role;
import com.stxt.superbase.profile.agent.bean.Agent;
import com.stxt.supercenter.rest.api.profile.agnet.AgentDTO;
import java.util.Arrays;
import java.util.Map;
.
.
.
需要指出的一件事 git show
以 vi
样式输出,即不是直接打印完整文件,而是打印文件的一部分以覆盖整个屏幕 :
最后打印下一行或退出。
为什么我在使用 check_output
时出错?
试试这个:
subprocess.check_output(['git', 'show', 'c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java'])
否则,您的代码会尝试执行字面上包含 space(git show
")的命令,而不是第一个参数为 show
的命令 git
.