2
私はpythonスクリプトを書こうとしています 1)cppファイルをコンパイルします。 2)cppファイルに入力する必要があるテキストファイル "Input.txt"を読み込みます。 3)出力を "Output.txt"ファイルと比較し、すべてのテストケースが正常に終了した場合は "Pass"を出力し、それ以外の場合は "Fail"を出力します。上記のコードの場合 Pythonスクリプトを使ってcppプログラムのstdinを渡す
`
`
import subprocess
from subprocess import PIPE
from subprocess import Popen
subprocess.call(["g++", "eg.cpp"])
inputFile = open("input.txt",'r')
s = inputFile.readlines()
for i in s :
proc = Popen("./a.out", stdin=int(i), stdout=PIPE)
out = proc.communicate()
print(out)
は、私が
(b'32769', None)
(b'32767', None)
(b'32768', None)
Traceback (most recent call last):
File "/home/zanark/PycharmProjects/TestCase/subprocessEg.py", line 23, in <module>
proc = Popen("./a.out", stdin=int(i), stdout=PIPE)
ValueError: invalid literal for int() with base 10: '\n'
PS、このような出力を取得しています: - eg.cppから番号をインクリメントするコードが含まれています」 Input.txt "を入力してください。
ありがとう、ありがとうございます!出来た。 python3がそれを望んでいるという事実から離れて、直接のStringではなくBinaryとしてファイルを開くための特別な理由はありますか? – Gautam
答えに説明されているように、いいえ(ここではテキストしか扱えないので、それは不愉快です)。これがあなたのためにうまくいけば、回答を受け入れたものとしてマークすることを検討してください。 –