我想编写一个与dmenu交互的python脚本。我能够弄清楚,如果我只希望dmenu仅接受用户输入,则可以通过
dmenu <&-
,它将显示干净的用户输入提示。我知道在python中使用子进程的等效方法是
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是实现此目标的唯一方法吗?
答案 0 :(得分:2)
您需要做的就是不向dmenu提供任何输入,因此:
subprocess.check_output("dmenu", input=b"")