4

重複の可能性:
Python サブプロセスのワイルドカードの使用

Python 2.6 サブプロセス モジュールを使用して、以前のサブプロセス呼び出しで構築している src.rpm ファイルでコマンドを実行する必要があります。

残念ながら、私は一貫性のない仕様ファイルを扱っているので、src.rpm のファイル名がどのように見えるべきかについて漠然とした考えしか持っていません (たとえば、パッケージの名前と、" {package}-{version}.src.rpm」ですが、バージョンではありません)。

ただし、探しているディレクトリには src.rpm ファイルが 1 つしかないことはわかっているので、次のようなコマンドでモックを呼び出すことができます。

mock {options} *.src.rpm

シェルで動作させますが、サブプロセスは展開を受け入れたくないようです。(shell=True) を subprocess.call() の引数として使用しようとしましたが、機能したとしても避けたいと思います。

どうすれば次のようなものを取得できますか

subprocess.call("mock *.src.rpm".split())

走る?

4

2 に答える 2

8

globパッケージを使用します。

import subprocess    
from glob import glob
subprocess.call(["mock"] + glob("*.src.rpm"))
于 2013-01-23T15:21:22.280 に答える
4

ワイルドカード * は、SHELL によって解釈される必要があります。subprocess.call を実行すると、デフォルトではシェルはロードされませんがshell=True、引数として与えることができます:

subprocess.call("mock *.src.rpm".split(), shell=True)
于 2013-01-23T15:41:51.953 に答える