【发布时间】:2021-09-30 13:56:16
【问题描述】:
使用 python 3.7
我有以下问题:我编写了一个 python 脚本,在其中我打开一个 cmd 提示符,执行一些操作,然后我想向打开的 cmd 提示符发送一些命令
为了简化,它看起来像:
import subprocess
process = subprocess.Popen(['start','cmd','/k','dir'], shell = True, stdin= subprocess.PIPE,
stdout = subprocess.PIPE, text = True)
"DO some actions"
input = 'date'
process.stdin.write(input)
process.communicate(input, timeout = 10)
脚本总是以 TimeoutExpired 异常退出,并且在 cmd 提示符下我没有看到写入的命令(输入)
我查看了文档,但我是 python 新手,不太了解如何使用 subprocess 模块
感谢您的支持!
【问题讨论】:
-
为什么要开始这个过程?你在那里跑什么?
-
这里有两个问题:1)通过
start间接启动cmd,你创建了一个你无法控制的命令窗口; 2) 由于您没有以换行符结束“日期”字符串,因此您实际上并没有执行命令。 -
嗨 Balderman,我的想法是我必须打开一个 .exe 文件,并且在不同的时间我必须在打开的窗口上写一些命令。我用 cmd 提示符 i 简化了这个问题,我首先发送一个 dir 命令,然后我想向同一个 cmd 窗口发送一个新命令(日期)。我不知道该怎么做。
-
嗨@jasonharper,有没有办法控制那个cmd窗口?
-
是的,直接启动
cmd,而不是要求start为您启动它。
标签: python subprocess