[英]Reading Multiple lines in stdin using subprocess
我正在嘗試從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()
假設您要逐行讀取文件,並且僅將當前行傳遞給程序,則讀取文件中所有行的最佳方法是
with open("testcases.txt","r") as someFile:
iterate = someFile.readlines()
for line in iterate:
#Code
someFile.readlines()讀取並返回someFile中所有行的列表。 但是,您需要將其傳遞給sampleprog.exe。 我將使用Popen.communicate()。 可能這是一個巨大的矯kill過正,但隨后您的循環看起來像
for line in iterate:
s = subprocess.Popen(['sampleprog.exe'], stdin = subprocess.PIPE, stdout = saveFile)
s.communicate(line)
另外,您應該打開saveFile進行寫入(“ w'rite”或“ a” ppend選項)
您正在傳遞給Popen一個打開的文件,以stdout的形式讀取。 我認為輸出應該這樣構造:
saveFile = open("store.txt", "w")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.