0
上下文:我试图找到一个python包的github存储库。要做到这一点,我是zgrep'ping包归档github网址。它正常工作,直到我限制输出1分的结果:subprocess.check_output(),zgrep和匹配限制
# works, returns a lot of results
subprocess.check_output(["zgrep", "-oha", "github", 'Django-1.10.1.tgz']) # works, a lot of results
# add -m1 to limit output, returns status 2 (doesn't work)
subprocess.check_output(["zgrep", "-m1", "-oha", "github", 'Django-1.10.1.tgz']) # works, a lot of results
# same command, different file - works
subprocess.check_output(["zgrep", "-m1", "-oha", "github", 'grabber.py'])
在命令行中,所有三个命令做工精细。有任何想法吗?
回溯:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 574, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['zgrep', '-m1', '-oha', 'github', 'pkgs/Django-1.10.1.tar.gz']' returned non-zero exit status 2
命令行:
$ zgrep -m1 -oha "github.com/[^/]\+/django" pkgs/Django-1.10.1.tar.gz
github.com/django/django
'zgrep'是(显然)返回了一个非零退出状态...只是因为命令打印上的东西命令行并不意味着它有0退出状态。运行commmand后立即尝试'echo $?' - 是否为'0'? – mgilson
@mgilson,对不起,我之前没有提及它。是的,如果从控制台启动,它将返回0状态。只有在发生错误时,Grep才会返回状态2(1表示不匹配) – Marat
upd:'grep'对于Python中的'-m1'也可以正常工作 – Marat