我正在创建一个可以使用subprocess和tkinter在命令提示符下执行的GUI。
def test_subprocess(self):
proc = subprocess.Popen(["echo", "Hello"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True, shell=False)
response = proc.communicate()[0]
self.log.insert("end", response)
如果我设置shell=False
,我会收到此错误:
FileNotFoundError: [WinError 2] The system cannot find the file specified
我已经将参数分成了一个序列。
答案 0 :(得分:3)
这是因为^[
是Windows中的内置命令,而不是可执行文件。您 以启用echo
以使其正常工作。
(或添加shell前缀,例如shell=True
或bash -c
,具体取决于您的操作系统)
在Windows上为你提供:有效:
cmd /c
但我认为这只是一项练习,因为从proc = subprocess.Popen(["cmd", "/c", "echo", "Hello"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True, shell=False)
开始echo
运行对于Popen
来说是过度的。)
注意:在Linux / UNIX中它也是内置的,但正如cdarke所说,在某些版本的print
中有一个回退可执行文件,因此可行。