3

我有一个 bash 脚本,用于更新我家中的几台计算机。它利用 deborphan 程序来识别我的系统(显然是 Linux)上不再需要的程序。

bash 脚本利用了 bash 的参数扩展,这使我能够将 deborphan 的结果传递给我的包管理器(在本例中为 aptitude):

aptitude purge $(deborphan --guess-all) -y

deborphan 的结果是:

python-pip
python3-all

我想将我的 bash 脚本转换为 python(部分作为学习机会,因为我是 python 新手),但我遇到了一个重大障碍。我对 python 脚本的明显开始是

subprocess.call(["aptitude", "purge", <how do I put the deborphan results here?>, "-y"])

我已经为上面的 subprocess.call 中的一个参数尝试了一个单独的 subprocess.call ,只是为了 deborphan 并且失败了。

有趣的是,我似乎无法通过以下方式捕捉 deborphan 结果:

deb = subprocess.call(["deborphan", "--guess-all"])

将 deborphan 的结果作为参数的变量传递。

反正有没有在 python 中模拟 Bash 的参数扩展?

4

1 回答 1

6

您可以+用来连接列表:

import subprocess as sp
deborphan_results = sp.check_output(…)
deborphan_results = deborphan_results.splitlines()
subprocess.call(["aptitude", "purge"] + deborphan_results + ["-y"])

(如果你使用的是低于 2.7 的 Python 版本,你可以使用proc = sp.Popen(…, stdout=sp.PIPE); deborphan_results, _ = proc.communicate()

于 2013-03-11T01:41:48.190 回答