2011-12-07 19 views
3

ここには単純なバッチファイルがあり、コマンドラインから単語の文書を印刷します。私はPythonスクリプトにこれを配置しようとしていますPython内で単語の文書を印刷する

"C:\Program Files\Microsoft Office\Office12\winword.exe" "p:\docs\daily checks.doc" /mFilePrintDefault /mFileExit 

は、私は、コマンドで/mFilePrintDefault /mFileExit一部を取得するように見えることはできません

subprocess.Popen('"C:\\Program Files\Microsoft Office\Office12\winword.exe"' '"P:\\docs\\daily checks.doc "') 

を使用して開くには、ドキュメントを取得するために管理しています、私は+'"/mFilePrintDefault /mFileExit"'プラスを使用せずに試してみましたが、ドキュメントは開かれません。

subprocess.Popen('"C:\\Program Files\Microsoft Office\Office12\winword.exe" m"P:\\docs\\daily checks.doc" /mFilePrintDefault /mFileExit') 

Popenが期待する:

答えて

8

これは動作するはずです:

subprocess.Popen(["C:\\Program Files\Microsoft Office\Office12\winword.exe", "P:\\docs\\daily checks.doc", "/mFilePrintDefault", "/mFileExit"]).communicate() 

あるいは、altenatively、

subprocess.Popen("'C:\\Program Files\Microsoft Office\Office12\winword.exe' 'P:\\docs\\daily checks.doc' /mFilePrintDefault /mFileExit", shell=True).communicate() 

をごshell=Trueを使用すると、コマンドがシェルを介して実行されます。これは、シェルでコマンドを書くのと同じ方法で、つまり引数をスペースで区切らないように引用符で囲むのと同じ方法で、単一の文字列を渡す必要があることを意味します。

shell=False(デフォルト値)を使用すると、コマンドはシェルで実行されません。これは、引数を自分で分割する必要があることを意味します。これを行う方法は、すべての引数を含むリストを渡すことです。この場合、リスト要素がすでにこの情報を提供しているので、余分な引用は必要ありません。

+0

素敵な説明です! +1 – mac

+0

完璧なことは、迅速な対応とヘルプのために非常に感謝しました。にスポット! – geekcomputers

0

には、以下の使用してみてください

あなたは、おそらく私がこのWord文書を印刷することができますどのように見るのを助けることができる、またはより良い方法は、事前に

おかげであります完全な文字列またはargsのリストは、基本的にシェルに入力するものをPopenと入力すると動作します。

documentation on Popen状態:

引数が文字列、またはプログラム引数の順序でなければなりません。

関連する問題