如何使用Python的子进程模块在终端中执行两个命令?

时间:2019-02-11 14:32:52

标签: python linux subprocess popen

如何使用子流程模块(即callcheck_callPopen)运行多个命令?

例如,假设我想快速连续执行两次ls命令,以下语法不起作用

import subprocess
subprocess.check_call(['ls', 'ls'])

返回:

CalledProcessError: Command '['ls', 'ls']' returned non-zero exit status 2.

3 个答案:

答案 0 :(得分:2)

只需执行两次命令即可。

import subprocess
subprocess.check_call(['ls'])
subprocess.check_call(['ls'])

那应该足够快。

修改

如果要在同一shell中执行两个命令,请编写一个执行它们的shell脚本,然后从Python运行该脚本。

答案 1 :(得分:2)

您可以使用&&;

$ ls && ls
file.txt file2.txt
file.txt file2.txt

$ ls; ls
file.txt file2.txt
file.txt file2.txt

区别在于,与&&不同,在false && ls情况下,第二条命令仅在第一个命令成功(尝试;)时才执行。独立于首次执行而执行。

因此,Python代码将是:

import subprocess
subprocess.run(["ls; ls"], shell=True)

答案 2 :(得分:1)

下面的代码将起作用。但是只执行两次ls命令会更好吗?

import subprocess
subprocess.Popen(["ls;ls"],shell=True)