如何 运行 在 gnome 3.36.9 中使用不带“-e”的参数打开

How to run Popen with arguments without "-e" in gnome 3.36.9

我之前在这里有话题但是我的问题没有解决...

我使用旧版本的 Gnome 很长时间了,我的脚本工作得很好。我安装了最新版的Gnome(3.36.9),有个小问题不影响程序的使用。我说的是一个错误:

Option “-e” is deprecated and might be removed in a later version of gnome-terminal. # Use “-- ” to terminate the options and put the command line to execute after it.

它不会阻止我使用或 运行 该程序,但我想摆脱控制台中的错误。

我以前的工作初始代码如下所示:

    # <--- CONFIG ---> #
    os.chdir("/home/administrator/program/cartypes")
    car1 = "audi"
    color1 = "black"
    engine = "diesel"
    # <--- CONFIG ---> #
    
    p1 = Popen(['gnome-terminal', '--wait', '-e','python3 ./program.py --car ' + car1 + ' --color ' + color1 + ' --engine ' + engine1])
    time.sleep(5)
    p1.communicate()
    p1.wait()
    print("End!")

我读了一下,将“-e”改为“--”,即:

p1 = Popen(['gnome-terminal', '--wait', '--','python3', './program.py'])

理论上程序会启动,但不幸的是,当我将 argparse 添加到代码中时它不再工作,而且我不知道如何将工作脚本与发送到 program.py 的参数连接起来,就像以前一样在带有“-e”的第一个代码中:

p1 = Popen(['gnome-terminal', '--wait', '--','python3', './program.py'])

与:

./program.py --car ' + car1 + ' --color ' + color1 + ' --engine ' + engine1

谢谢! :)

去掉连接,让它们分开列表元素。

p1 = Popen(['gnome-terminal', '--wait', '--', 'python3', './program.py', '--car', car1, '--color', color1, '--engine', engine1])

您的原始代码也没有引用或转义变量,因此如果其中任何包含引号字符,您可能 运行 会遇到问题。