3

家のいくつかのコンピューターを更新するために使用するbashスクリプトがあります。それは私のシステム(明らかにLinux)でもはや必要とされていないプログラムを識別するdeborphanプログラムを利用します。

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に対してのみ失敗しました。

興味深いことに、私は次のようなデボルファンの結果を捉えることができないようです。

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 に答える