1

私は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:\Program」がコマンドとして認識されないと文句を言います。

あちこちに「\」を入れてみましたが、うまくいきませんでした。

4

4 に答える 4

4

Pythonには「」と「」の2種類の引用符があり、それらは完全に同じです。したがって、文字列で引用符を取得する最も簡単な方法は、「C:\ Program Files \ MPlayer-1.0rc2\mencoder.exe」と言うことです。

生のプレフィックス(つまり、r'"C:\ Program Files \ MPlayer-1.0rc2 \ mencoder.exe"')を使用することは良い考えですが、バックスラッシュの後に次のような文字が続くことはないため、ここではエラーではありません。エスケープコードです。したがって、元の文字列の前にrを付けても、元の文字列はまったく変更されません。

于 2009-07-07T05:38:10.533 に答える
1

私は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()
于 2011-11-20T07:55:05.540 に答える
1

Windows で実行している場合は、1 つではなく 2 つの引用符を使用してください。

"\\"
于 2010-01-06T20:20:54.523 に答える
0

mencoder.exe を、名前の中にスペース文字を含まないディレクトリに配置することもできます (Program Files とは対照的です)。

于 2010-04-21T00:14:30.367 に答える