Python 执行cmd/shell命令-从cmd/shell获取输出-对输出运行函数-并在同一cmd/shell会话中执行答案
提前感谢任何能提供帮助的人 流量: 1-在cmd或shell中执行命令#成功完成 2-从命令获得输出#成功完成 3-通过某个函数运行输出#成功完成 4-将答案执行回同一个cmd/shell会话#这就是我失败的地方 5-获取第二个命令的输出#这就是我失败的地方 这就是我目前所拥有的Python 执行cmd/shell命令-从cmd/shell获取输出-对输出运行函数-并在同一cmd/shell会话中执行答案,python,shell,cmd,subprocess,Python,Shell,Cmd,Subprocess,提前感谢任何能提供帮助的人 流量: 1-在cmd或shell中执行命令#成功完成 2-从命令获得输出#成功完成 3-通过某个函数运行输出#成功完成 4-将答案执行回同一个cmd/shell会话#这就是我失败的地方 5-获取第二个命令的输出#这就是我失败的地方 这就是我目前所拥有的 with Popen("COMMAND", stdout=PIPE, bufsize=1, shell=True, universal_newlines=True) as p: for line in p.std
with Popen("COMMAND", stdout=PIPE, bufsize=1, shell=True, universal_newlines=True) as p:
for line in p.stdout:
expression+=line
result = ## some function returning var "result"
试过下面的代码
试过这个
我也试过这个
这个呢
他们都不工作
还尝试了pexpect-更糟糕您可能不想这样做。这当然是可能的,但您必须处理缓冲和各种微妙的问题。你为什么要这样做?特别是,为什么您需要在
cmd
中运行命令,为什么第二个命令需要在同一个cmd
进程中运行?因此,您的第一个cmd将第二个cmd打印为字符串?@chrisam是的,第二个cmd将打印一个字符串,该字符串位于第一个命令的输出中cmd@SvenMarnach它连接到远程计算机,远程计算机在第一个命令后会说些什么,我需要用第一个命令输出中的文本进行响应,在第二个命令后,我需要再次获取输出。简单解释如下:1-运行命令2-获取输出3-运行命令(在同一个cmd/shell/terminal会话中)4-重新绘制输出这不是您使用shell=True
时要做的事情。您没有通过cmd/c
运行单个命令。直接运行cmd.exe需要一个交互式shell,所有3个标准句柄都重定向到管道。cmd本身可以像这样工作,但是如果您运行外部程序,它们可能会在stdout或disable interactive模式下使用完全缓冲,因为管道不是tty——除非它们有命令行选项,比如Python的-i(强制交互)和-u(禁用缓冲)。
out = p.communicate(input=result)[0]
print (out)
out , errs = p.communicate(input=result)
print (exp)
print (out)
print (p.communicate(input=result)[0])