我正在使用 subprocess.check_output
运行 Xyce(SPICE 模拟器)模拟,因为我想使用其结果进行进一步分析。
这是我正在使用的代码:
x=subprocess.check_output(['./Xyce','Circuit.cir'])
volt=[]
for i in range(1,4):
start=x.find('FINAL_COL{}_VOLT = ' .format(i)) + 18
end=x.find('Measure Start Time')
volt.append(x[start:end])
print colored ('volt=','cyan')
这是我获得的 Xyce 模拟日志:
FINAL_COL1_VOLT = 0.0145203
Measure Start Time= 0 Measure End Time= 1
FINAL_COL2_VOLT = 0.0176678
Measure Start Time= 0 Measure End Time= 1
FINAL_COL3_VOLT = 0.0811186
Measure Start Time= 0 Measure End Time= 1
我得到了结果 volt=[' 0.0145203\n','','']
并且我期望得到 volt=[' 0.0145203\n',' 0.0176678\n','0.0811186\n']
。我做了一些调试,发现问题出在我的 end
上,因为在每个结果之后都会重复 'Measure Start Time'
。因此,当我尝试将结尾更改为另一个字符串时,代码执行了,但当然没有给我所需的输出,因为在获得 VOLT
值后我没有停止。
所以,关于如何解决这个问题的想法。
提前致谢
最佳答案
您没有为测量开始时间
的查找
提供偏移量。将第二个 find
更改为:
end=x.find('Measure Start Time', start)
并且搜索 end
将从您标识的 start
开始,而不是从字符串的开头开始(它总是找到相同的 end
)。
关于python - subprocess.check_output逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234392/