本当に を使用したい場合os.system
は、シェル コマンド ラインが文字列として渡され、任意の文字列を渡すことができます。そう:
os.system('jar -xvf "' + pathvariable + '" js/pay.js)
{}
または、または%s
フォーマットなどを使用できます。
ただし、おそらく使用したくないでしょうos.system
。
まず、他のプログラムを実行したい場合は、ほとんどの場合、subprocess
モジュールを使用する方が適切です。例えば:
subprocess.check_call(['jar', '-xvf', pathvariable, 'js/pay.js'])
ご覧のとおり、文字列をまとめる方法を考え出す代わりに、引数のリストを渡すことができます (そして、エスケープや引用などの混乱に対処します)。他にも多くの利点があり、主にドキュメント自体に記載されています。
war
ただし、おそらくツールをまったく実行したくないでしょう。Jimhark が言うように、WAR ファイルは特別な種類のJAR ファイルであり、これは特別な種類のZIP ファイルです。それらを作成するには、通常は JAR/WAR 固有のツールを使用します (レイアウトを確認する、マニフェストが ZIP ディレクトリの最初のエントリであることを確認する、パッケージの署名に注意するなどの必要があります)。それらの場合、どの ZIP ツールも機能します。また、Python には ZIP サポートが組み込まれています。やりたいことは、おそらく次のように簡単です。
import zipfile
with zipfile.ZipFile(pathvariable, 'r') as zf:
zf.extract('js/pay.js', destinationpathvariable)
ZipFile
IIRC、2.7 および 3.2+のステートメントでのみ直接使用できるwith
ため、たとえば 2.6 または 3.1 を使用している場合は、間接的に使用する必要があります。
from contextlib import closing
import zipfile
with closing(zipfile.ZipFile(pathvariable, 'r')) as zf:
zf.extract('js/pay.js', destinationpathvariable)
または、これが終了するとすぐに終了する簡単で汚いスクリプトである場合は、次の方法で回避できます。
import zipfile
zf = zipfile.ZipFile(pathvariable, 'r')
zf.extract('js/pay.js', destinationpathvariable)
しかしwith
、それは良い習慣なので、可能な限り常にステートメントを使用するようにしています。