【发布时间】:2010-11-05 23:57:05
【问题描述】:
如何使用子进程运行此命令?
我试过了:
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
我注意到的事情:
- 在 Windows 上运行命令 控制台工作正常。
- 如果我删除 回声博斯科|部分,它运行良好 上面的公开电话。所以我认为 这个问题与回声或 |。
【问题讨论】:
-
当您在 Windows 控制台中运行该完整行时,它是否真的有效? WindowsError 表明问题不是你的 Python 代码,而是要执行的实际命令。
-
是的,它从 Windows DOS 控制台运行。
标签: python subprocess pipe echo popen