Как запустить эту команду с подпроцессом?Python - Subprocess - Как вызвать команду Piped в Windows?
Я пробовал:
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()
но получил:
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
вещи я заметил:
- Запуск команды на окнах консоли прекрасно работает.
- Если я удалю ECHO bosco | часть, он отлично работает вышеприведенный вызов. Поэтому я думаю, что эта проблема связана с эхом или |.
ли это полная линия на самом деле работает, когда вы запускаете его в консоли Windows? WindowsError предполагает, что проблема не в коде Python, а в действительной команде. –
Да, он запускается из консоли dos dos. – Greg