python - subprocess.CalledProcessError... 返回非零退出状态 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'
您可以使用单个字符串而不是数组吗?恕我直言,这可能不太容易出错
subprocess.check_output('curl https://...')
推荐阅读
- python - Python新手,我需要做这个循环吗?我知道它真的很混乱
- persistence - Tabulator column.setWidth() 不保存到历史记录
- javascript - 为什么我的代码在完成之前的代码之前跳到下一个 .then ?
- pymodbus - 具有多个从站的 Pymodbus 串行转发器
- python - 将文件作为元组的元组列表读取
- python - 数据框透视,排列新列值而不创建额外的 NaN 值
- git - 有没有办法设置一个后备 git commit 模板?
- reactjs - 如何修复此错误在现有状态转换期间无法更新
- java - 使用来自 Java 的用户输入运行 cmd-line 程序
- python - 使用 pandas 从 csv 文件保存和检索时丢失 numpy 数组维度