python与cmd交互_在python中与Windows CMD交互

通过Python的`subprocess`模块与Windows CMD进行交互,可以实现命令发送及接收输出。示例代码中展示了如何改变目录并查看效果。注意需要使用`stdin`参数,并在适当时候关闭输入流以确保命令执行。在交互过程中,可以使用`flush()`方法确保命令立即发送,并通过`wait()`等待进程结束。如果需要保持进程活跃,可以在适当时间间隔内继续发送命令。
摘要由CSDN通过智能技术生成

communicate将缓冲区的内容发送到标准输入,然后关闭输入管道,从而终止进程。所以你不能做一些互动的事情。在

此外,必须将stdin参数传递给Popen,否则默认情况下不会重定向任何内容。在import subprocess

proc = subprocess.Popen('cmd.exe',stdin=subprocess.PIPE)

现在您可以向proc.stdin(别忘了python3compat的行终止符和二进制前缀),看看会发生什么

^{pr2}$

(好的,您可以在这个例子中使用cwd="Documents",但这是为了示例的缘故)

在这个例子中,输出是重定向的。这意味着您将在当前控制台中看到输出。不要忘了close标准输入,否则它将不起作用(可能是因为当python退出时缓冲区没有刷新和/或管道被破坏)。然后用wait()等待进程结束

完整示例:import subprocess

proc = subprocess.Popen('cmd.exe',stdin=subprocess.PIPE)

proc.stdin.write(b"cd ..\n")

# do some stuff in between...

proc.stdin.write(b"cd\n")

proc.stdin.close()

proc.wait()

在我的电脑上打印出来了(对不起我的法语)Microsoft Windows [version 6.1.7601]

Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

L:\so>cd ..

L:\>cd

L:\

如果不希望进程终止,可以使用更多技巧:

导入子流程,时间proc = subprocess.Popen('cmd.exe',stdin=subprocess.PIPE)

proc.stdin.write(b"cd ..\n")

proc.stdin.write(b"cd\n")

proc.stdin.flush()

time.sleep(1)

input("press return")

proc.stdin.write(b"cd\n")

proc.stdin.flush()

proc.stdin.close()

proc.wait()

它发送命令,刷新标准输入(但不关闭),然后等待消息打印,并要求按键。你可以发送更多的命令,只要你每次刷新,最后关闭。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值