我敢肯定,这很简单,我忽略了。我之前做过这种手术。我正在从我的模板文件htmlfile中读取数据,然后写入htmlfile2,这是我的实际报告。在任何人都不喜欢之前,HTML并没有被用在网站或任何东西上,它只是作为显示报告数据的便捷方式。我发现了rgraph,一个用于创建HTML5图形的工具,并且认为:“哇,这是完美的!我现在甚至不必编写GUI,我可以轻松地保存我的报告结果!”从一个文件读到另一个文件
我HTMLFILE有几行包含文本,它告诉我的计划提到htmlfile2更换线路的需求意见。如果我使用print语句来检查哪些循环正在执行,那么每次都会执行正确的循环。由于某些原因,文字从不改变。就好像写函数发生了一样,但是不起作用,它默默地失败了。模板中的值不在任何地方的python代码中,因此即使输入了循环,写入也不会完成它的工作。我已经尝试了一些不同的条件,只是为了看看是否会有任何改变,因此startswith与==等。
def editHTML(self, searchT, replaceT):
if os.path.isfile('C:/MetReports/report.html'):
with open('C:/MetReports/report.html') as htmlfile:
with open('C:/MetReports/report2.html', 'w') as htmlfile2:
for line in htmlfile:
if searchT in line:
if searchT.startswith('REP1'):
tester = "\t\t\tvar meter = new RGraph.Meter('cvs', 0,100, " + str(replaceT) + ") //REP1\n"
htmlfile2.write(tester)
elif searchT == 'REP2':
tester2 = "\t\t\tvar meter = new RGraph.Meter('cvs2', 0,100, " + str(replaceT) + ") //REP2\n"
htmlfile2.write(tester2)
elif searchT == 'REP3':
htmlfile2.write("\t\t\tvar meter = new RGraph.Meter('cvs3', 0,1000, " + str(replaceT) + ") //REP3\n")
elif searchT == 'REP4':
htmlfile2.write("\t\t\tvar meter = new RGraph.Meter('cvs4', 0,30, " + str(replaceT) + ") //REP4\n")
elif searchT == 'REP5':
htmlfile2.write("\t\t\tvar meter = new RGraph.Meter('cvs5', 0,30, " + str(replaceT) + ") //REP5\n")
elif searchT not in line:
htmlfile2.write(line)
编辑澄清:
实施例线路从HTMLFILE:
<canvas id="cvs" width="400" height="250" style="border: 1px solid #ccc; border-radius: 15px">[No canvas support]</canvas>
<script>
$(document).ready(function()
{
var meter = new RGraph.Meter('cvs', 0,100, 25) //REP1
.set('angles.start', RGraph.PI - 0.5)
.set('angles.end', RGraph.TWOPI + 0.5)
25是当输入环和searchT变量在底涂应该改变的数目,以便一个。示例运行如下所示:
editHTML('REP1', 30)
其中应该只更改上面的一行,重新将25与30
编辑2:
这是因为我认为,文字是由其他覆盖if语句运行时,它不应该是。我退出写的一个后(0)置于”,并检查了我的文件,并在它的信息是单独该值正确..
编辑3:在评论
解决方案对于谁曾经有一个人将来会出现类似的问题,请记住,调试,调试,调试!逐个进入你的进程,你会发现你的问题。就我而言,我调用了一个函数,却没有意识到它会覆盖我的输出文件的内容。输入文件
写操作都没有做什么?或者只是其中的一部分? – Brionius
似乎所有的,但最后写拒绝工作。这几乎就好像htmlfile2.write(line)覆盖了已更改的行,即使“if searchT not in line”应该阻止它执行此操作。 – TheFunk
您应该提供一个最小的完整示例,包括文件的内容(一行或两行应该足够)和调用参数。 – pentadecagon