0

PythonからC++プログラムを実行しようとしています。私の問題は、実行するたびに次のことです。

subprocess.Popen(['sampleprog.exe'], stdin = iterate, stdout = myFile)

ファイルの最初の行のみを読み取ります。whileループで囲むたびに、無限ループのためにクラッシュしてしまいます。内のすべての行を読み取る他の方法はありますtestcases.txtか?

以下の私のサンプルコード:

someFile = open("testcases.txt","r")
saveFile = open("store.txt", "r+")

try:
    with someFile as iterate:
        while iterate is not False:
            subprocess.Popen(['sampleprog.exe'],stdin = iterate,stdout = saveFile)

except EOFError:
    someFile.close()
    saveFile.close()
    sys.exit()
4

2 に答える 2

0

stdoutとして読み取るために開いたファイルをPopenに渡します。出力は次のように構成する必要があると思います。

 saveFile = open("store.txt", "w")
于 2013-02-20T10:53:26.047 に答える
0

ファイルを1行ずつ読み取り、現在の行のみをプログラムに渡すと仮定して、ファイル内のすべての行を読み取る最良の方法は次のとおりです。

with open("testcases.txt","r") as someFile:
    iterate = someFile.readlines()
    for line in iterate:
        #Code

someFile.readlines()は、someFile内のすべての行のリストを読み取って返します。ただし、sampleprog.exeに渡す必要があります。Popen.communicate()を使用します。おそらくそれは巨大なやり過ぎですが、あなたのループは次のようになります

for line in iterate:
    s = subprocess.Popen(['sampleprog.exe'], stdin = subprocess.PIPE, stdout = saveFile)
    s.communicate(line)

また、書き込み用にsaveFileを開く必要があります('w'riteまたは'a'ppendオプション)

于 2013-02-20T10:33:10.543 に答える