use*_*456 3 python windows subprocess
我尝试使用以下程序在Windows下包装cmd.exe但它不起作用,它似乎等待某些东西并且不显示任何内容.知道这里有什么问题吗?
import subprocess
process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
process.stdin.write("dir\r\n")
output = process.stdout.readlines()
print output
Run Code Online (Sandbox Code Playgroud)
通常在尝试使用实际命令调用命令提示符时,使用"/ k"参数调用它更简单,而不是通过via stdin传递命令.也就是说,只需调用"cmd.exe/k dir"即可.例如,
from os import *
a = popen("cmd /k dir")
print (a.read())
Run Code Online (Sandbox Code Playgroud)
下面的代码做了同样的事情,虽然缺少一个字符串供你操作,因为它管道直接输出:
from subprocess import *
Popen("cmd /k dir")
Run Code Online (Sandbox Code Playgroud)
process = subprocess.Popen('cmd.exe /k ', shell=True, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
process.stdin.write("dir\n")
o,e=process.communicate()
print o
process.stdin.close()
Run Code Online (Sandbox Code Playgroud)
顺便说一下,如果你的实际任务是真的要做目录列表,请使用Python自己的os模块,例如os.listdir()或glob模块......等等.不要不必要地调用这样的系统命令.它使您的代码不可移植.