0

フォルダーを検索し、特定のファイルを取得し、ファイルとコマンドを Windows の CMD シェルに渡す Python (2.5) スクリプトを作成しています。これは、コマンドで行う必要がありますprogram.exe /rptcsv <file being created> <file being used>。さらに、.exe は C:\Program Files (x86)\Reporter フォルダーから実行する必要があるため、作業ディレクトリが変更されます。

ここに私の問題があります: Python が 1 つの特定のファイル (fnmatch) を検索し、コマンド全体をシェルに渡す必要があります。これが正しく行われると、プロセスは GUI を起動せずにバックグラウンドで実行されます。
stdin に関する投稿を見てきました。stdout などであり、パイプで戻されるものは何も必要ありません。すべてを渡すために Python が必要なだけです。現在何が起こっているかというと、Python は GUI を起動しますが、コマンドを変数で完全に渡すことができません。これを行う方法はありますか?
私はまだ Python n00b ですので、明らかな誤りがあればご容赦ください。

MC01 = 'WKST01*.bat'
MC02 = 'WKST02*.bat'
files = os.listdir(FOLDER)

MC01_CMD = fnmatch.filter(files, MC01)
MC01_CSV = "MC01.csv"

exe = ("reporter.exe /rptcsv", MC01_CSV, MC01_CMD)
os.chdir("C:\Program Files (x86)\Reporter")
os.system("exe")

編集: コードの前半で、FOLDER で os.walk を使用しました。

print "Walking directory..."
    for root, dirs, files in os.walk(FOLDER):
        for file in files:
            pathname = os.path.join(root, file)

作業ディレクトリを切り替えたため、C:\Program Files (x86)\Reporter で MC01_CMD ファイルを検索していますが、(もちろん)そこにはありません。新しい変数を作成せずにパス名と MC01_CMD を結合して、MC01_CMD の正しい場所を取得する方法はありますか?

4

2 に答える 2

0

変数は文字列リテラルでは展開されません。cmdと入力して Enter キーを押すos.system("exe")のと同じです。exe

したがって、正しいコードの私の推測は次のようになります。

MC01_CSV = MC01 + ".csv"

os.chdir("C:\Program Files (x86)\Reporter")
os.system("reporter.exe /rptcsv " + MC01_CSV + " " + MC01_CMD)
于 2013-05-30T13:23:45.083 に答える