いくつかの引数にMEncoderでを呼び出すためのPythonを使用しました
質問
私は、私は、Pythonに非常に、非常に新しいですと言ってから始めましょう。
私はそれらを毎回入力することなく、パラメータの右のセットでMEncoderでを起動するには、Windows / DOSバッチファイルを持っていた。
私は私のスクリプトを改善しようとしたとき、物事は厄介だ、と私はPythonで何かをコーディングしようとする良い機会になることを決めます。
私はそれを作ってみた:
#!/usr/bin/python
import sys, os
#Path to mencoder
mencoder = "C:\Program Files\MPlayer-1.0rc2\mencoder.exe"
infile = "holidays.avi"
outfile = "holidays (part1).avi"
startTime = "00:48:00"
length = "00:00:15"
commande = "%s %s -ovc copy -oac copy -ss %s -endpos %s -o %s"
os.system(commande % (mencoder, infile, startTime, length, outfile))
#Pause
raw_input()
しかし、それは動作しません、Windowsは "C:\プログラムは" と文句を言います。コマンドは認識されていません。
私はいくつかの「\」」あちこちを入れしようとしましたが、それは助けにはならなかった。
解決
Pythonは、引用符の2種類を持っている」と「彼らは完全に等しい文字列に引用符を取得するので、最も簡単な方法はと言うことです。 『『C:』』 mencoder.exe \ \プログラムファイル\のMPlayer-1.0rc2。
生のプレフィックス(すなわち、R「『C:\プログラムファイル\のMPlayer-1.0rc2 mencoder.exe \は』」)の使用バックスラッシュのいずれもが続くされていないとして、良いアイデアですが、それはここではエラーではありませんエスケープコードである手紙。だからあなたの元の文字列には、その前にRを持つことによって全く変わりません。
他のヒント
1つではなく、2つの引用符を使用しています。
"\\"
私は、Pythonに新たなんだけど、私はそれを修正するために、その問題を参照してください今まで、ファイル(実行可能ファイルまたは引数)は引用符で囲む必要がありますとき、私は知っています。直前に、それは、コマンドライン引数を区別するためにスペースが含まれている任意のファイルの後に "\ に追加します。だから、同様にあなたのoutfileの変数に適用される。コードは次のようになります。..ます。
#!/usr/bin/python
import sys, os
#Path to mencoder
mencoder = "\"C:\Program Files\MPlayer-1.0rc2\mencoder.exe\""
infile = "holidays.avi"
outfile = "\"holidays (part1).avi\""
startTime = "00:48:00"
length = "00:00:15"
commande = "%s %s -ovc copy -oac copy -ss %s -endpos %s -o %s"
os.system(commande % (mencoder, infile, startTime, length, outfile))
#Pause
raw_input()
あなたも、それが名前(プログラムファイルではなく)だ内部の空間の文字を持っていないディレクトリにmencoder.exeを置くことができます。