如何在 python 脚本中执行多个 CLI 命令?

How to execute multiple CLI commands in a python script?

我正在使用 TeamForge 的 CLI 在缺陷跟踪器部分创建工件。 CLI file/executable 称为 "ctf",没有扩展名。我想使用 python 脚本来创建工件,但最多只能执行一个命令。我想一次创建一个错误。这是我目前的代码:

import os
os.system("./ctf    go tracker1234;             # going to Defects section
                    create;                     # creating an artifact
                    set title This Is A Title;  # setting artifact's fields
                    set description desc123; 
                    set Product [Product 23]; 
                    set build_number Not known; 
                    set Severity Catastrophic; 
                    set steps_to_reproduce 1st comment; 
                    set Component [component 4]; 
                    set Version [version 19]; 
                    commit)                     # saving the artifact on TeamForge

这是我不断收到的错误:

sh: 1: create: not found
sh: 1: commit: not found

所以我认为这些命令没有按顺序或我指定的顺序执行。这意味着每个命令都是单独执行的。有什么建议可以按照我指定的顺序获取这些命令 运行 吗?

如果需要进一步解释,请告诉我。

更新

我刚刚发现您可以这样做:go tracker1234 create 两步合二为一

你可以尝试将你的论点引用给ctf;看看这个:

>>> os.system("echo hi; echo again;")
hi
again

对比:

>>> os.system("echo 'hi; echo again;'")
hi; echo again;

分号终止 shell 中的命令。如果您的参数包含分号,您必须将它们引用起来,以免它们破坏您的参数列表。

然而,根据 CTF guidelines,他们处理这种多命令情况的方法似乎是将它们放入脚本并执行:

./ctf script.txt

要在标准输入上向您的程序传递信息,要么使用

  • 您的 shell 的设施,例如 here-document or pipeline,在您指定的命令行中,或
  • Python的设施,例如根据 How to launch and pass input to an external program

或者,您的程序可能有一些 "batch processing mode" 允许您在命令行或文件中提供您的命令集,但是,查看 CTFCLI manual page,这不会好像不太可能。