我正在尝试从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()
答案 0 :(得分:0)
读取文件中所有行的最佳方法,假设您想要逐行读取,并且只将当前行传递给程序
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 options)
答案 1 :(得分:0)
你正在向Popen传递一个打开阅读的文件作为标准输出。我认为输出应该像这样构造:
saveFile = open("store.txt", "w")