C est marrant non ?
Surtout que je n avais jamais touché a python ou a pygtk et encore moins fait une applet avant
J aurai besoin de ton expertise ...
Simple problème de syntaxe.
Pour l exemple, j ai un dossier avec un simple fichier blabla.txt
$ cat blabla.txt
ceci est un contenu texte
En python:
>>> liste = subprocess.Popen("cat blabla.txt", shell=True, stdout=subprocess.PIPE).communicate()[0]
>>> print liste
ceci est un contenu texte
Mais on a pas toujours besoin de la valeur de retour, alors je me dit que on devrait pouvoir n utiliser que subprocess.call
>>> subprocess.call(["ls"])
blabla.txt
0
La ça marche. Maintenant avec "cat" ...
>>> subprocess.call(["cat blabla.txt"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/local/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/local/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Donc je sépare mes arguments :
>>> subprocess.call(['cat', 'blabla.txt'])
ceci est un contenu texte
0
Voila le problème. Je n arrive pas a avoir l équivalent de :
$ cat blabla.txt | cut -d' ' -f1
ceci
>>> subprocess.call(['cat', 'blabla.txt', '|', 'cut', '-d', '' '', '-f1'])
ceci est un contenu texte
cat: |: No such file or directory
cat: cut: No such file or directory
cat: -d: No such file or directory
cat: : No such file or directory
cat: -f1: No such file or directory
1
Il peut y avoir le problème de gérer le ' ' après cut, dans le genre \' \' , mais on voit que ça bloque des |
Une idée docteur ?
J avais détourné le problème en envoyant la sortie sur un stdout.PIPE a chaque fois, mais c est lourd !
cat n est pas le meilleur cas, puisque en général on a besoin de sa sortie, mais la on s en fout, c est juste pour l exemple.