【发布时间】:2017-09-07 09:02:11
【问题描述】:
我正在尝试编写一个 python 脚本 1) 编译一个 cpp 文件。 2) 读取一个文本文件“Input.txt”,该文件必须提供给 cpp 文件。 3) 将输出与“Output.txt”文件进行比较,如果所有测试用例都成功通过则打印“Pass”,否则打印“Fail”。 `
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”中的数字加 2 的代码。
【问题讨论】:
标签: c++ python-3.x