我正在学习django。我被这个问题困扰了。
所以基本上,我设计了一个 HTML 表单(模板),它以文本文件作为输入并生成该文本文件的画外音。我espeak
在后端使用它。因此,当用户上传文件时,此命令(espeak -ven+m1 -f sample.txt
其中sample.txt
是上传文件的名称)应在新的终端窗口中运行。
正如您在上图中所看到的,这就是我想要实现的目标。
espeak -ven+m1 -f sample.txt
我想在新的终端窗口中打印上面这一行。
这里sample.txt
是文本文件的名称。我想通过 python 程序来实现这一点,而不是手动完成。
正如我已经说过的,我是 django 的新手,如果能得到一些帮助我将非常感激。
编辑:
我尝试运行此命令
subprocess.run(['gnome-terminal', '--', f"espeak -ven+m1 -f {uploaded_file.name}"])
但我得到的输出是这样的
There was an error creating the child process for this terminal
Failed to execute child process “espeak -ven+m1 -f sample.txt” (No such file or directory)
另请注意,Run a custom command instead of my shell
复选框是取消勾选
答案1
您可以使用此命令打开一个新终端并在其中运行您的命令:
gnome-terminal -x sh -c "python3; bash"
这python3
是我正在运行的命令,您可以用您的命令替换它:
gnome-terminal -x sh -c "espeak -ven+m1 -f sample.txt; bash"
现在总结一下,在你的 Python 程序中使用这段代码:
from subprocess import call
call(["gnome-terminal", "-x", "sh", "-c", "espeak -ven+m1 -f sample.txt; bash"])
注意:如果您使用任何其他终端仿真器,则必须gnome-terminal
用您的仿真器替换。
欲了解更多信息,请访问关联