簡體   English   中英

subprocess.CalledProcessError…返回非零退出狀態2

[英]subprocess.CalledProcessError… returns non zero exit status 2

我正在制作一個python腳本來執行shell命令,然后處理輸出。 我要執行以下命令:

curl "https://api.github.com/users/username/repos?per_page=200" | grep -o 'git@[^"]*'| awk -F "/" '{print $2}'| awk -F "." '{print $1}'

我正在使用subprocess.check_output方法,例如:

with open(os.devnull,'w') as devnull:
    f=subprocess.check_output(['curl', 'https://api.github.com/users/username/repos?per_page=200', '|', 'grep', '-o', 'git@[^"]*','|', 'awk' ,'-F' ,'/', '{print $2}' ,'|' ,'awk', '-F', '.' ,'{print $1}'],stderr=devnull)
    res=ujson.loads(f)
    data=res.get('items')
    print(data[0].get('login'))

但是它給出了以下錯誤:

subprocess.CalledProcessError: Command '['curl', 'https://api.github.com/users/username/repos?per_page=200', '|', 'grep', '-o', 'git@[^"]*', '|', 'awk-F', '/', '{print $2}', '|', 'awk', '-F', '.', '{print $1}']' returned non-zero exit status 2

我已經檢查了類似的問題,但他們沒有解決問題。

由於'awk' '-F' awk-F 'awk' '-F'中缺少逗號, awk-F命令中缺少空格

您可以使用單個字符串代替數組嗎? 可能不太容易出錯恕我直言

subprocess.check_output('curl https://...')

你想得到鑰匙? 下面是使用urllib2和json的示例

import urllib2 , json

data = json.load(urllib2.urlopen("https://api.github.com/users/test/repos?per_page=200"))
for repos in data:
    print repos["name"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM