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

问题描述 投票:0回答:3

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

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

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

收益:

CalledProcessError: Command '['ls', 'ls']' returned non-zero exit status 2.
python linux subprocess popen
3个回答
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
投票

只需执行两次命令。

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

这应该足够快。

编辑

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


1
投票

以下代码可行。但是两次执行ls命令不是更好吗?

import subprocess
subprocess.Popen(["ls;ls"],shell=True)
© www.soinside.com 2019 - 2024. All rights reserved.