我想写一个与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实现这个的唯一方法吗?
您需要做的就是不为dmenu提供输入,因此:
subprocess.check_output("dmenu", input=b"")