我想编写一个与 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"")
关于python - 是否有另一种方法来关闭标准输入文件描述符(当前使用 <&- with shell=True)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54754487/