0

出力ファイルを提供するPythonスクリプトがあります。この出力ファイルをコマンド ライン プログラムに渡す必要があります。コマンドライン プログラムを呼び出して、Python でファイルを処理するように制御する方法はありますか?

このコードを実行しようとしました

import os
import subprocess
import sys

proc = subprocess.Popen(["program.exe"], stdin=subprocess.PIPE)
proc.communicate(input=sys.argv[1]) #here the filename should be entered
proc.communicate(input=sys.argv[2]) #choice 1
proc.communicate(input=sys.argv[3]) #choice 2

コマンドラインからの入力を入力する方法はありますか。また、cmdプログラムはコードを実行した後、インターフェイスがちらつきます。

ありがとう。

注: プラットフォームは Windows です

4

6 に答える 6

1

http://docs.python.org/library/subprocess.htmlをご覧ください。これは、外部プログラムを開始するときの現在の方法です。多くの例があり、ニーズに最も適したものを自分で確認する必要があります.

于 2012-10-15T07:55:44.173 に答える
0

コマンドラインでコマンドとしてos.system(somestr)実行できるようにすることができます。semestrただし、これは安全でないなどの理由で時間の経過とともに精査されてきました(リンクを見つけたらすぐに投稿します)。

その結果、従来は次のように置き換えられてきましたsubprocess.popen

お役に立てれば

于 2012-10-15T07:58:34.107 に答える
0

サブプロセスに関する別の質問に答えたばかりなので、もっと良い選択肢があります!

すばらしいライブラリpythonshをご覧ください。これは、Pythonの本格的なサブプロセスインターフェイスであり、関数であるかのように任意のプログラムを呼び出すことができます。さらに重要なのは、Pythonicであるということです。

于 2012-10-15T08:58:05.797 に答える
0

パイプを使用してデータ ストリームをリダイレクトする以外に、次のようなコマンド ラインを処理することもできます。

mycode.py -o outputfile inputfilename.txt

sysをインポートする必要があります

import sys

そしてあなたの主な機能で:

ii=1
infile=None
outfile=None
# let's process the command line
while ii < len(sys.argv):
arg = sys.argv[ii]
        if arg == '-o':
            ii = ii +1
            outfile = sys.argv[ii]
else:
            infile=arg  
        ii = ii +1

もちろん、ファイルチェックなどを追加することもできます...

于 2012-10-15T09:11:03.867 に答える
0

必要な制御の程度によっては、pexpectを使用する方が簡単な場合があります。これにより、プログラムの出力の解析がかなり簡単になり、プログラムの stdin との対話にも簡単に使用できます。ウェブサイトをチェックしてください、彼らはいくつかの素晴らしい例を持っています.

于 2012-10-15T08:04:46.247 に答える
0

ターゲット プログラムが での入力を予期している場合は、 pipeSTDINを使用してリダイレクトできます。

python myfile.py | someprogram
于 2012-10-15T08:07:57.807 に答える