是否有其他方法关闭stdin文件描述符(当前使用<&with shell=True)?

2024-06-16 14:49:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个与dmenu交互的python脚本。我发现如果我想让dmenu只接受用户输入,我可以通过

dmenu <&-

它将显示一个干净的用户输入提示。我知道在python中使用subprocess实现这一点的等效方法是

subprocess.check_output("dmenu <&-", shell=True)

但是我不认为这是最好的方法,因为如果我使用提示符,它会将提示符文本解释为bash语法(例如在“dmenu-p”Project?'中,它会解释“?”)

有没有一种方法可以使用subprocess.Popen实现同样的功能?我尝试了很多不同的东西,比如

subprocess.Popen("dmenu", stdin=None)
import sys
sys.stdin.close()
subprocess.Popen("dmenu", stdin=sys.stdin)

使用shell=True是实现这一点的唯一方法吗


Tags: 方法用户文本脚本bashtrueoutputcheck