如何从python执行命令提示符命令

我尝试了这样的事情,但没有任何效果:

command = "cmd.exe" proc = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE) proc.stdin.write("dir c:\\") 

你可能想尝试这样的事情:

command = "cmd.exe /C dir C:\\"

我不认为你可以管入cmd.exe …如果你是来自unix背景,那么cmd.exe有一些丑陋的疣!

编辑:根据Sven Marnach,你可以管到cmd.exe 我试图在一个python外壳下面:

 >>> import subprocess >>> proc = subprocess.Popen('cmd.exe', stdin = subprocess.PIPE, stdout = subprocess.PIPE) >>> stdout, stderr = proc.communicate('dir c:\\') >>> stdout 'Microsoft Windows [Version 6.1.7600]\r\nCopyright (c) 2009 Microsoft Corporatio n. All rights reserved.\r\n\r\nC:\\Python25>More? ' 

正如你所看到的,你还有一些工作要做(只有第一行被返回),但是你也许能够得到这个工作。

简单地说:

 import os os.system('dir c:\\') 

尝试在写入管道之后添加对proc.stdin.flush()的调用,看看事情是否开始按照您的预期proc.stdin.flush() 显式刷新管道意味着您不必担心如何设置缓冲区。

此外,不要忘记在命令的末尾加入"\n" ,否则在等待完成命令输入的提示符下,你的子shell将会坐在那里。

我写了关于使用Popen更详细地操作外部shell实例的方法: 在Python中使用同一个进程运行三个命令

就像在这个问题中的情况一样,如果您需要在Windows机器上的多个进程外调用之间维护shell状态,这个技巧可能是有价值的。

尝试:

 import os os.popen("Your command here") 

你为什么要打电话cmd.exe cmd.exe是一个命令行(shell)。 如果你想改变目录,使用os.chdir("C:\\") 如果Python可以提供,请不要调用外部命令。 实际上,大多数操作系统命令都是通过os模块(和sys)提供的。 我建议你看看os模块文档,看看可用的各种方法。