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

读取文件内所有行的最佳方法,假设您想逐行读取它,并且只将当前行传递给程序是

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'pend 选项)

于 2013-02-20T10:33:10.543 回答
0

您正在向 Popen 传递一个打开以作为标准输出读取的文件。我认为输出应该是这样构造的:

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