Bonjour,
Je souhaite enchainer une commande linux simple genre:

cd dossier
ls

j'ai ecrit une ebauche de script mais elle ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import subprocess
 
cat = subprocess.Popen(['cd', 'dossier'], 
                        stdout=subprocess.PIPE,
                        )
grep = subprocess.Popen(['ls'],
                        stdin=cat.stdout,
                        stdout=subprocess.PIPE,
                        )
 
end_of_pipe = grep.stdout
 
print 'Included files:'
for line in end_of_pipe:
    print '\t', line.strip()
voici le message d'erreur :
Traceback (most recent call last):
File "sub.py", line 4, in <module>
stdout=subprocess.PIPE,
File "/usr/lib/python2.7/subprocess.py", line 672, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1213, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
En revanche si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import subprocess
 
cat = subprocess.Popen(['mkdir', 'test'], 
                        stdout=subprocess.PIPE,
                        )
 
grep = subprocess.Popen(['ls'],
                        stdin=cat.stdout,
                        stdout=subprocess.PIPE,
                        )
 
end_of_pipe = grep.stdout
 
print 'Included files:'
for line in end_of_pipe:
    print '\t', line.strip()
Le dossier "test" est crée, donc je pense qu'il ya un problème avec 'cd' ...
Je galère depuis quelques heures, si quelqu'un peut m'aider, ça serait sympa. merci