2015-09-21 2 views
0

Я пишу скрипт python, в котором я должен прочитать вывод команды git show из сценария. Я решил использовать функцию subprocess.check_output python.git show не работает с python check_output

Но это дает мне No such file or directory Ошибка.

Запуск из питона:

>>> 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?

ответ

2

Попробуйте это:

subprocess.check_output(['git', 'show', 'c9a89aa:supertext/src/com/stxt/supercenter/rest/api/bootstrap/BootstrapDTO.java']) 

В противном случае, ваш код пытается выполнить команду буквально, содержащим пробел («git show») вместо команды git с show в качестве первого аргумента.

Смежные вопросы