gpt4 book ai didi

Python3 Tkinter - 将输入(y)写入子进程的控制台

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:26 26 4
gpt4 key购买 nike

我一直在四处寻找问题的答案,但一直很不走运。我希望答案能与 native python 一起使用,并希望它很简单。

我的问题是我在我的 tkinter 应用程序中使用子进程,但其中一个命令要求您编写 Y/N 以确保您要继续执行该操作。

所以我正在寻找一种方法,当出现这样的消息时,将 y 写入终端:你确定你要继续吗? (是/否)

我试过运行 subprocess.run("y") 但这似乎不起作用。

我正在 Debian Linux 上对此进行测试,并调用询问我是否要继续的命令是 subprocess.getoutput() 以便我可以检查错误。

代码

class RemovePublicKeyDialog:
def __init__(self, parent):
top = self.top = Toplevel(parent)

Label(top, text="Who to remove?").pack()

self.e = Entry(top)
self.e.pack(padx=5)

b = Button(top, text="REMOVE", command=self.ok)
b.pack(pady=5)

def ok(self):
#print("value is " + self.e.get())
key = self.e.get()
cmd = subprocess.getoutput("gpg --delete-keys " + key)
print(cmd)
if ("key \"" + key + "\" not found" in cmd):
messagebox.showerror("Error", "No such public key.")
elif ("Delete this key from keyring?" in cmd):
#subprocess.run("echo 'y'")
messagebox.showinfo("Success", "Public key \"" + key + "\" deleted from keyring.")
else:
messagebox.showerror("Error", "Unknown error, did you input a key?")

self.top.destroy()

这是“主要”代码,一切正常,只是我需要输入 Y 才能继续。

最佳答案

许多命令行实用程序都有一个标志,可以自动对任何提示回答"is"——如果您可以访问特定命令的源代码,如果没有则添加这样一个标志(或者只是制作一个自定义版本从不提示)可能是最简单的解决方案。如果不是直接从终端运行,某些命令会自动执行此操作 - 您确定这甚至是个问题吗?

如果你知道会有一个提示,你可以试试:
subprocess.run("echo y | your-command", shell=True)

如果可能有多个提示,您必须使用 subprocess 模块中更复杂的选项之一,读取和解析命令输出以了解何时需要回复。

关于Python3 Tkinter - 将输入(y)写入子进程的控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38571439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com