Contexte: J'essaie de trouver un dépôt github d'un paquet python. Pour ce faire, je zgrep'ping archive de paquets pour les urls github. Et cela fonctionne bien jusqu'à ce que je limite la sortie de 1 résultat:subprocess.check_output(), zgrep et limite de correspondance
# 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'])
Depuis la ligne de commande, les trois commandes fonctionnent bien. Des idées?
Traceback:
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
Ligne de commande:
$ zgrep -m1 -oha "github.com/[^/]\+/django" pkgs/Django-1.10.1.tar.gz
github.com/django/django
'zgrep' est (apparemment) le retour d'un état de sortie non nulle pour que l'on ... Tout simplement parce que les impressions de commande choses sur la ligne de commande ne signifie pas qu'il a un statut de sortie 0. Essayez 'echo $?' Immédiatement après avoir exécuté la commande - Est-ce '0'? – mgilson
@mgilson, désolé je ne l'ai pas mentionné auparavant. Oui, il renvoie 0 statut s'il est lancé à partir de la console. Grep renverra le statut 2 seulement si une erreur s'est produite (1 signifie aucune correspondance) – Marat
upd: 'grep' fonctionne aussi bien avec' -m1' de Python – Marat