2016-10-12 51 views
0

我試圖用git做一些事情。我不知道我會怎麼做if語句參數來檢查,如果該命令被正確執行:如何檢查命令是否完成?

git checkout master && git reset --hard && git fetch && git pull 

我是用支票試圖如果輸出等於if語句,但我想這是一個壞主意。下面是一個代碼:

#!/usr/bin/python3 
import os 
import subprocess 
import time 

while True: 

x = subprocess.getoutput("git checkout master && git reset --hard && git fetch && git pull") 

    if x is "Some text": 
    print('Some actions there') 

time.sleep(3600) 

所以我不知道有什麼辦法來檢查命令,其中完成與否。

+0

剛剛閱讀退出代碼 –

+1

改爲使用['.getstatusoutput()'](https://docs.python.org/3/library/subprocess.html#subprocess.getstatusoutput)並檢查退出代碼是否爲0 (即成功)。 – user3030010

+0

我做了 x = subprocess.getstatusoutput(「git checkout master && git reset --hard && git fetch && git pull」) if x [0] is 0: print('do some stuff') time.sleep (2) 這是正確的嗎? – Chrzanek

回答

0

使用subprocess模塊,但執行您的每個命令與Popenrun。我會推薦後者,因爲它的返回類型有用check_returncode()方法。使用shlex.split()將命令轉換爲其部件列表。

基本上你想要做的是一樣的東西:

import subprocess, shlex 
for (cmd in ("git checkout master", "git reset --hard", "git fetch", "git pull")): 
    subprocess.run(shlex.split(cmd)).check_returncode() 

免責聲明:本寫的ad-hoc和未經測試。它只是告訴你如何到達那裏,而不是一直爲你做。