Comment exécuter cette commande avec un sous-processus?Python - Sous-processus - Comment appeler une commande Piped dans Windows?
J'ai essayé:
proc = subprocess.Popen(
'''ECHO bosco|"C:\Program Files\GNU\GnuPG\gpg.exe" --batch --passphrase-fd 0 --output "c:\docume~1\usi\locals~1\temp\tmptlbxka.txt" --decrypt "test.txt.gpg"''',
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
stdout_value, stderr_value = proc.communicate()
mais a obtenu:
Traceback (most recent call last):
...
File "C:\Python24\lib\subprocess.py", line 542, in __init__
errread, errwrite)
File "C:\Python24\lib\subprocess.py", line 706, in _execute_child
startupinfo)
WindowsError: [Errno 2] The system cannot find the file specified
choses que j'ai remarqué:
- exécution de la commande sur les fenêtres console fonctionne très bien. Si je retire le ECHO bosco | partie, il fonctionne bien le l'appel popen ci-dessus. Donc, je pense que ce problème est lié à l'écho ou |.
Est-ce que la ligne complète fonctionne effectivement lorsque vous exécutez dans la console Windows? WindowsError suggère que le problème n'est pas votre code Python, mais la commande à exécuter. –
Oui, il fonctionne à partir de la console Windows dos. – Greg